Djangoメモ(27) : 掲示板アプリの返信機能を実装する
- 返信一覧ページの作成
- 返信一覧ページのテスト
- 返信一覧の表示
- 返信フォーム作成
- 返信機能のテスト
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考に掲示板アプリの返信機能を実装する。
返信一覧ページの作成
このチュートリアルで作成している掲示板アプリには以下のモデルがある。
- Board : カテゴリのようなもの(例:"Python"に関するBoard)
- Topic : スレッドのようなもの(例:"Python"Board内の"インストール方法"に関するTopic)
- Post : Topicに対する返信
これまでにBoardとTopicについては実装しているので、今回はPostに関して実装する。
最初にTopicに対するPostの一覧を表示するページのURLConfをmyproject/urls.py
に追加する。
path('boards/<int:pk>/topics/<int:topic_pk>/', views.topic_posts, name='topic_posts'),
pk
はBoardに対するプライマリキーでtopic_pk
はTopicに対するプライマリキー。
続いてtopic_posts
をboards/views.py
に追加する。
from django.shortcuts import get_object_or_404, render from .models import Topic def topic_posts(request, pk, topic_pk): topic = get_object_or_404(Topic, board__pk=pk, pk=topic_pk) return render(request, 'topic_posts.html', {'topic': topic})続きを読む
Djangoメモ(26) : coverage.pyでカバレッジ(網羅率)を計測
- coverage.pyのインストール
- coverage.pyの実行方法
- coverage.pyの設定
- coverage.pyのプラグイン
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考に作成している掲示板アプリのテストコードのカバレッジを計測してみる。
coverage.pyのインストール
チュートリアルでは様々なテストコードを書いているがカバレッジ(網羅率)がどの程度なのか計測してみる。
ドキュメントにはcoverage.pyの説明があるのでcoverage.pyを試してみる。
coverage.pyはpip
コマンドでインストール可能。
$ pip install coverage
今回はPipenvで環境を構築しているので下記コマンドでインストール。
$ pipenv install coverage続きを読む
Djangoメモ(25) : login_requiredデコレータでビューをログイン済みユーザーのみに制限
- login_requiredデコレータ
- ログイン後のリダイレクト先
- login_requriedのテスト
- Topic作成者としてログインユーザーを指定
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にビューをログイン済みユーザのみに制限してみる。
login_requiredデコレータ
前回まででユーザー認証機能は実装したので、新しいTopicを作成する機能をログイン済みユーザのみに制限する。
上の画像からわかるように現時点ではログインしていないユーザーでもアクセスできるようになっている。
続きを読むDjangoメモ(24) : ユーザー認証を実装する〜パスワード変更
- パスワード変更
- パスワード変更のテスト
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にパスワード変更機能を実装する。
パスワード変更
サインアップ、ログアウト、ログイン、パスワードリセット機能を実装してきたが、最後にパスワード変更機能を実装する。
Djangoではパスワード変更のビューも提供されているのでmyproject/urls.py
に以下の2行を追加。
path( 'settings/password/', auth_views.PasswordChangeView.as_view( template_name='password_change.html'), name='password_change'), path('settings/password/done/', auth_views.PasswordChangeDoneView.as_view( template_name='password_change_done.html'), name='password_change_done'),続きを読む
Djangoメモ(23) : ユーザー認証を実装する〜パスワードリセットとメール送信
- パスワードリセットの流れ
- メール送信設定
- メールドアレス入力(password_reset.html)
- メール送信完了(password_reset_done.html)
- 新パスワード登録(password_reset_confirm.html)
- パスワードリセット完了(password_reset_complete.html)
- パスワードリセットのテスト
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にパスワードリセット機能を実装する。
パスワードリセットの流れ
ログイン、ログアウトと同様にパスワードリセットのビューもDjangoで提供されているが以下のようにメール送信など手順が多い。
- パスワードリセットを開始するフォームでEメールアドレスを入力するとパスワードリセットリンクが記載されたメールが送信される(
reset/
) - メールが送信されたことをユーザに伝える画面が表示される(
reset/done/
) - パスワードリセットリンクにアクセスして表示されるフォームで新パスワードを入力(
reset/<uidb64>/<token>/
) - パスワードリセットが完了したことをユーザに伝える画面が表示される(
reset/complete/
)