2022年3月1日こんにちは、MSKです。出退勤を記録するアプリの続きです。今回はユーザー登録と認証を作っていきます。関連する記事は以下になります。この記事はここ!スポンサーリンクユーザー登録serializers.pyに次を追加しました。userパスワードを必須にして、writeオンリーにしています。認証を行うので、TokenModelのオブジェクトを作成しています。次にviews.pyを編集して、次を追加します。UserSerializer最後に、アプリのurls.pyに次を追加します。routers.DefaultRouter()router.register('',ApiViewSet)router.register('user',UserViewSet)この状態でrunserverして、Postmanからユーザー登録してみます。Forbiddenと表示されて、次のメッセージが出ていました。incorrect."}かなり悩んだのですが、PostmanのCookiesから残っていたCookieたちを消去してあげたら、うまくいきました。"piyo@hoge.com"}うまくいったと思って、管理者のページを見てみると次のような表示が・・・パスワードが正常に登録されなかったみたいです。create()はユーザーが作成されるときに通るはずだから、中身どうなっているか見てみるか」と思いログをprint文で仕込みました。※組み込み系では、デバッグのやり辛さからブレイクで止めて解析するよりログを流して解析することをよくやります。create()のインデントを1つ左にずらしました。上のserializers.pyは正しくは次のようになります。次にユーザー認証を作っていきたいと思います。検索をしてみて、よさそうだと思ったのが「dj_rest_auth」です。dj_rest_authについてはこのページに詳しく載っています。インストールをしてみます。dj-rest-authインストールが終わったら、settings.pyを編集します。'dj_rest_auth',]プロジェクトのurls.pyに認証のためのパスを追加します。path('dj-rest-auth/',include('dj_rest_auth.urls')),ログインしたユーザーのデータしかとれないようにしたいので、ApiModelをUserModelに紐づけます。models.DateTimeField(default=timezone.now)次にview.pyを変更します。認証に必要な処理と、get_querysetをオーバーライトすることでログインしているユーザーを取得し、それによりフィルターをかけています。attribute.querysetを使う場合にはbasenameを入れてあげないといけないみたいですね。routers.DefaultRouter()router.register('',ApiViewSet,basename='api')router.register('user',UserViewSet,basename='user_regi')runserverするとエラーが解消されているようです。dj-rest-auth/login/に登録しているユーザー名、パスワードのパラメータを記述してアクセスします。正常に動作しているみたいです。keyという名前でトークンが与えられています。ログインしているユーザーでGETをしてみたいと思います。(取得したkey)でvalueに入力し、/api/にアクセスを行います。GETできたデータはログインしたuserのものになっています。最後に今回はユーザー登録と認証を作りました。「dj-rest-auth」を使うと簡単に認証機能を作ることができました。記録するアプリのユーザー登録と認証を実装する!」でした。最後までご覧いただき、ありがとうございます。MEMSK九州在住の組み込み系エンジニアです。2児の父親でもあります。数学やプログラミングが趣味です。最近RustとReact、結び目理論と曲面結び目理論にはまっています。MSKもちのき研究所PythonでUDP通信をやってみよう!MacでPyCharmをインストールして使ってみよう!組み込み系エンジニアMSKソフトウェア関連の技術が好きな30代男性です。最近は、Webアプリ開発にチャレンジ中。