DjangoのUserモデルを使用してみる
当ページのリンクには広告が含まれています。
DjangoでUserモデルを使用する方法をまとめます。
✓目次
- Userオブジェクトとは
- HTTPメソッドの適用
- views.pyファイルでUserモデルをimportする
- Userモデルをテーブル化してDB化(migrateコマンド)
- ユーザ登録
- Userデータの表示
Userオブジェクトとは
Userオブジェクトとは、認証システムです。Djangoアプリ開発に関わるユーザ情報を登録することができます。
登録ユーザのプロパティは以下の通りです。
- username
- password
- first_name
- last_name
本記事では、htmlファイル(signup.html
)
のFormにHTTPメソッドを適用し、Userオブジェクトの取得方法をまとめます。
HTTPメソッドの適用
HTTPメソッドについては以下の記事でまとめているので参照ください。
Djangoで作成したHTMLファイルのformタグの部分にPOSTメソッドを適用する際は、formタグの内部にmethod='POST'
と、csrf_tokenを記述します。
1 | <form class="form-signin" method='POST'>{% csrf_token %} |
これでPOSTメソッドでデータを送ることができます。
views.pyファイルでUserモデルをimportする
Userモデルは、Djangoがデフォルトで具備しているモデルであり、models.pyに自らモデルを記述する必要はありません。
まずは、Djangoの公式ドキュメントに従ってUserモデルをインポートします。
1 | from django.shortcuts import render |
Userモデルからオブジェクトデータすべてを抽出する記述にしていきます。
1 | from django.shortcuts import render |
User.objects.all()
という記述で、Userモデルのすべてのオブジェクトデータを取得できます。
取得して全オブジェクトデータをprint(object_list)
として表示させます。
Userモデルをテーブル化してDB化(migrateコマンド)
以下の通りmigrateコマンドを実行。
makemigrationコマンドは、models.pyファイルに新しいモデルを定義していないので、実施する必要はありません。
1 | docker-compose exec web python manage.py migrate |
usernameやemailという記述が確認できます。Userモデルが作成されたように見えますね。
ユーザ登録
ここではsatoとtanakaというユーザを作成していきます。Email addressはtanakaさんだけbbb@example.com
というアドレスを登録しておきます。他は、ひとまず何も入力せずEnterでOKです。passwordは適当にpassword
と入力しておきます。
1 | $ docker-compose exec web python manage.py createsuperuser |
docker-compose ps
コマンドでWebとDBが起動していることを確認し、chromeなどのブラウザで、localhost:8000/admin
にアクセスしてみましょう。ユーザ名はroot
, パスワードはpassword
です。
Userデータの表示
docker-compose up
コマンドで、フォアグラウンドモードでコンテナを起動させ、localhost:8000/signup
にアクセスして、GETメソッドを送ってみましょう。
Terminal上に、QuerySetというリストが確認できます。
1 | web_1 | <QuerySet [<User: root>, <User: tanaka>, <User: sato>]> |
次に、個別のデータを取得してみましょう。
個別のデータを取得したい場合は、views.pyにて以下のように.get(username = 'tanaka)'
とすればOKです。
1 | from django.shortcuts import render |
localhost:8000/signup
にアクセスすると、tanaka
というのがterminal上で確認できます。
1 | web_1 | tanaka |
次にtanakaさんのemailアドレスを取得したい場合は、取得したオブジェクトに対して、emailというプロパティを指定すればOKです。
1 | from django.shortcuts import render |
localhost:8000/signup
にアクセスしてGETメソッドを送信してterminalを確認してみましょう。
1 | web_1 | bbb@example.com |
Djangoをより深く学びたい方へ(Udemyのオススメ講座)
【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!(Django2版 / 3版を同時公開中です)
こちらは大橋亮太先生のUdemy講座です。具体例をたくさん入れた解説が好評であり、「なぜ」の説明が丁寧です。