作成した掲示板はこんな感じになります。 ⇒ 動作確認はこちらから

ログイン機能に関するプロジェクトテンプレートの配置の設定

ログイン機能を実装します。プロジェクトのなかに別に作成しているaccountsというアプリのなかでこれをおこないますが、bbsと共通のテンプレートを使えるようにプロジェクトテンプレートの配置を設定します。

内側のmyappディレクトリのなかにあるsettings.pyを編集します。

となっている部分を以下のように編集します。

それからログインしたあとどこへリダイレクトされるかも設定します。

ログイン状態を表示するナビゲーションバーを表示させる

テンプレートのファイルは外側のmyappディレクトリ内にtemplatesという名前のディレクトリを作成し、さらにそのなかにregistrationというディレクトリを作成して、そのなかに作成します。ファイル名とパスは {プロジェクト名}/templats/registration/login.html でなければなりません。

login.html

ログインページとログアウトページの作成

それからログアウトしたときに表示されるページを表示するためのテンプレートも作成します。これも{プロジェクト名}/templats/registration/logged_out.htmlとパスと名前が決められています。

logged_out.html

それからこのふたつのテンプレートファイルはlayout.htmlと使用しています。このひとつ上のディレクトリにlayout.htmlという名前でファイルを作成します。

ナビゲーションバーを表示させてログインしているときとしていないときでは表示させる内容を変えます。ログインしているときはユーザー名とログアウトボタン、ログインしていないときはログインするためのボタンとユーザー登録のためのボタンを表示させます。

これはあとまわしにしますが、掲示板の内容を表示するときにマークダウン記法に対応させたいと考えています。そこでh1からh6までの文字の大きさをテンプレート内で設定しています。

layout.html

内側のmyappディレクトリのなかにあるsettings.pyを編集します。INSTALLED_APPSのなかに以下の1行を追加します。

それから以下の変更もしておきます。これでデフォルトで表示される文字列が日本語になります。

settings.py

あとタイムゾーンも’Asia/Tokyo’に変更しておくと投稿の作成更新日時が日本時間で表示されるようになります。

settings.py

次に内側のmyappディレクトリのなかにあるurls.pyを編集します。

これで http://localhost:8000/accounts/login/ にアクセスするとログイン画面が表示されるはずです。そして管理サイト作成時のユーザー名とパスワードを入力するとログインし、http://localhost:8000/bbs/ にリダイレクトされ、正しくないパスワードを入力した場合は「ユーザー名とパスワードが一致しません」と表示されるはずです。

ユーザー登録できるようにする

次に新しくユーザー登録をすることができるようにします。

まずユーザー登録画面を表示させるためのテンプレートを作成します。作成する場所は{プロジェクト名}/accounts/templates/accountsディレクトリ内です。ファイル名はsignup.htmlです。

signup.html

次にaccountsディレクトリ内のviews.pyを以下のように編集します。

そして同じディレクトリ内のurls.pyを以下のように編集します。

さらに内側のmyappディレクトリ内のurls.pyに以下を追加します。

そして前述のlayout.htmlの一部を以下のように書き換えます。

これでユーザー登録ができるようになりました。

http://localhost:8000/accounts/signup/ にアクセスして別のユーザー名とパスワードで登録してみてください。登録が完了すると http://localhost:8000/accounts/login/ にリダイレクトされます。

次回はログインしたユーザーが新規投稿をできるようにします。