『Django入門編5: Djangoでユーザー管理しよう (全10回)』
メモ
#01:ユーザー管理機能を理解しよう
- Django:標準でユーザー管理機能をもつ
- ユーザー情報:管理サイト、Userモデル
- ユーザー識別:ログイン・ログアウト・パスワード変更などのビューを標準装備
- ユーザー権限:アクセス制御に利用できるヘルパー関数やクラス
#02:ユーザー登録・ログイン機能の動作確認
完成版の動作確認
#03:ログイン・ログアウト画面を用意しよう
- ユーザー管理のルーティング(Djangoで予め用意されている)
役割 | ルート |
---|---|
ログイン | accounts/login/ |
ログアウト | accounts/logout/ |
パスワード変更 | accounts/password_change/ |
パスワード変更結果 | accounts/password_change/done/ |
パスワードリセット | accounts/password_reset/ |
パスワードリセット結果 | accounts/password_reset/done/ |
アカウントリセット | accounts/reset/<uidb64>/<token>/ |
アカウントリセット結果 | accounts/reset/done |
- プロジェクトテンプレートの配置を設定する
myapp/settings.py- 'DIRS': [os.path.join(BASE_DIR, 'templates')],
※ ↑自分の環境の場合、import osを追記する必要があった。
- ログイン後のリダイレクト設定
myapp/settings.py- LOGIN_REDIRECT_URL = '/'
- プロジェクトのルートディレクトリにtemplates/registrationフォルダを作成
myapp/templates/registration - ルーティングを設定する
myapp/myapp/urls.py- path('accounts/', include('django.contrib.auth.urls')),
#04:ログイン・ログアウト画面のテンプレートを作ろう
- 共通テンプレートを追加する
lunchmap/templats/layout.html
※ ↑Tipsにあるコードにタイプミスがあるんだが 😟
'nav-time'って・・・😑
どっかのナビサイトじゃないんだから・・・😒
- ログイン用テンプレートを追加
myapp/templats/registration/login.html - ログアウト用テンプレートを追加
myapp/templats/registration/logged_out.html
#05:ユーザー登録画面を作ろう - その1
- Lunchmapアプリにサインアップ画面を追加
- ユーザー登録:サインアップ画面
ルート | ビュー | 表示ページ |
---|---|---|
(ドメイン名)/accounts/signup | views.SignUpView.as_view() | サインアップ画面 |
- accountsアプリを作成する$ python manage.py startapp accounts
- accountsアプリを登録するmyapp/myapp/settings.py
- 'accounts.apps.AccountsConfig',
- setting.pyの言語設定を変更
myapp/myapp/settings.py- LANGUAGE_CODE = 'ja' # 'en-us'
- プロジェクトのルーティングを設定する
myapp/myapp/urls.py- path('accounts/', include('accounts.urls')),
- accountsアプリのルーティングを設定する
myapp/accounts/urls.py(新規作成)- path('signup/', views.SignUpView.as_view(), name='signup'),
#06:ユーザー登録画面を作ろう - その2
- accountsアプリのviews.pyを修正
lunchmap/accounts/views.py - テンプレートとしてsignup.htmlを作成
lunchmap/accounts/templates/accounts/signup.html - 共通テンプレートにサインアップを追加
lunchmap/templats/layout.html
#07:ログイン時だけ投稿・編集・削除を可能にしよう
- Lunchmapアプリのナビにログインを表示する
myapp/lunchmap/templates/lunchmap/shop_list.html
myapp/lunchmap/templates/lunchmap/shop_detail.html- {% extends 'layout.html' %}
- lunchampのviews.pyに、アクセス制御を追加する
myapp/lunchmap/views.py- from django.contrib.auth.mixins import LoginRequiredMixin
class CreateView(LoginRequiredMixin, generic.edit.CreateView):
class UpdateView(LoginRequiredMixin, generic.edit.UpdateView):
class DeleteView(LoginRequiredMixin, generic.edit.DeleteView):
- from django.contrib.auth.mixins import LoginRequiredMixin
#08:ログイン時だけ投稿・編集・削除リンクを表示
- お店一覧ページで、ログイン時だけ「新しいお店」リンクを表示
lunchmap/shops/templates/shops/shop_list.html - ログイン時だけ、編集・削除リンクを表示
lunchmap/shops/templates/shops/shop_detail.html
#09:ログインユーザー名を、作成・編集に使おう
- CreateViewを修正する
myapp/lunchmap/views.py - UpdateViewsで、投稿者名を非表示にする
myapp/lunchmap/views.py- from django.core.exceptions import PermissionDenied
- class UpdateView(LoginRequiredMixin, generic.edit.UpdateView):
def dispatch(self, request, *args, **kwargs):
#10:セッションとパスワードを理解する
省略
認定証
このレッスンでは、チャプター9を終了した時点で、認定証が授与される。
※コメント投稿者のブログIDはブログ作成者のみに通知されます