不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『Django入門編5: Djangoでユーザー管理しよう (全10回)』を受講してみた

2021-03-05 23:01:42 | paiza

『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):

#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を終了した時点で、認定証が授与される。


学習ステータス