本棚アプリケーションの作成②【5-4 ログイン機能の追加】
ログイン機能の実装
Djangoのauthアプリケーションの中のurls.pyファイル呼び出せるようにするためにurls.pyファイルを編集していきます。
bookproject/bookproject/urls.py
を
に編集。
これで127.0.0.1:8000/accounts/というURLをrequestすることでauthアプリケーションのurls.pyファイルを呼び出すことができるようになりました。
サーバーを立ち上げてhttp://127.0.0.1:8000/accounts/login/にアクセスします
(venv) $ python manage.py runserver
エラーが出ました。これはtemplateが存在しないと表示されています。このエラーを解決するためにログイン画面を表示するhtmlファイルを作成します。
以下のコマンドを実行していきます。(この時manage.pyファイルがあるディレクトリでコードを実行します)
(venv) $ mkdir templates/registration
(venv) $ touch templates/registration/login.html
そして作成したlogin.htmlファイルに以下のコードを書き込んでいきます。
bookproject/templates/registration/login.html
そして再度
サーバーを立ち上げてhttp://127.0.0.1:8000/accounts/login/にアクセスします
(venv) $ python manage.py runserver
無事にログイン画面ができました。
ここで第4章で作成したユーザーIDを入力してログインしてみましょう
そしたらエラーが出ました。これはaccpunts/profile/というURLにアクセスする設定になっているにも関わらず、そのURLを設定していないために発生したエラーです。ログイン自体はできています。このエラーを解決するためにsetting.pyファイルに以下のコードを追加します。
bookproject/bookproject/setting.py
再度ログインしましょう。
無事ログインできました。
本棚アプリケーションの作成②【5-3 index_viewの実装】
function-based viewの理解を深めよう
ここまで、function-based viewの最低限の流れについて理解してきました。
次に、viewとModelを連携させましょう
views.pyファイルにコードを追記します
bookproject/book/views.py
を
に編集
次にブラウザ上でデータを表示させるため、index.htmlファイルにコードを書いていきましょう。
bookproject/book/templates/book/index.html
を
に編集
サーバーを立ち上げてhttp://127.0.0.1:8000/にアクセスします
(venv) $ python manage.py runserver
index_viewとListBookViewの表示が同じであることを確認しましょう。
ここからfunction-baseb viewの腕の見せ所です。データを表示させる順番を変えていきます。
まずは、管理画面からデータを一つ追加します。サーバーを立ち上げ、管理画面(127.0.0.1:8000/admin/)にアクセスします。
追加するデータは次の通りです。
Title:ビジネス最前線
Text:最新のビジネス
Category:ビジネス
3つ本のカテゴリは上から「business」「life」「business」となっています。
これらの、カテゴリごとに表示させるためにカスタマイズをします。
views.pyファイルを編集します。
bookproject/book/views.py
を
に編集
改めてサーバーを立ち上げてhttp://127.0.0.1:8000/にアクセスします。
(venv) $ python manage.py runserver
上から2つが「business」に関する本、そして、一番下が「life」に関する本となっています。つまり亜k手ごりごとに並び替えができました。
このように、function-based view を使うことによって、シンプルなコードで直観的に実装をすることができます。
本棚アプリケーションの作成②【5-2 トップページの作成】
はじめに
トップページを作成していきます。
まずはurls.pyとviews.pyファイルを編集していきます。
bookproject/book/urls.py
を
に編集
bookproject/book/views.py
を
に編集
renderについて
index.htmlファイルを作成していきます。
(venv) $ touch book/templates/book/index.html
そして以下のコードを書き込んでいきます。
bookproject/book/templates/book/index.html
そしてサーバーを立ち上げてhttp://127.0.0.1:8000/にアクセスします。
(venv) $ python manage.py runserver
ターミナルに表示させる
function-based viewにおけるDjangoの内部処理についてより詳しく見ていきます。
views.pyファイルに次のコードを追記します。
bookproject/book/views.py
を
に編集
そして再度サーバーを立ち上げてhttp://127.0.0.1:8000/にアクセスします。
(venv) $ python manage.py runserver
そしてwebサイトのほうではなく、ターミナルを見ると、いままでサーバーを立ち上げたときのターミナルは下の画像で
今回サーバーを立ち上げたときのターミナルはこちらになります。
本棚アプリケーションの作成【4-13 レイアウト等の調整】
見た目を整えていく
base.htmlを編集していきます。
bookproject/templates/base.html
を
bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
uhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
href="{% url 'list-book' %}">書籍一覧</a>
href="{% url 'create-book' %}">書籍登録</a>
次にbook_list.htmlファイルの修正を行っていきます。
bookproject/book/templates/book/book_list.html
bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
uhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
を
bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
uhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
に編集
サーバーを立ち上げてhttp://127.0.0.1:8000/book/にアクセスします。
(venv) $ python manage.py runserver
上の画像のようにレイアウトがかわり整えられました。
最後にDatailBookViewのレイアウトを変更していきます
bookproject/book/templates/book/book_detail.html
を
に編集
本棚アプリケーションの作成【4-12 リンク設定】
ブラウザ上でページを遷移させていく
ここまで作成したアプリでは、ブラウザ上でリンクが作成されておらず、URLに直接入力するといった形で個別のURLをブラウザに直接打ち込んで画面を遷移させていました。これを解決するためにボタンをクリックすることによって画面を遷移する形にします。
bookproject/book/templates/book/book_list.html
bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
uhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
を
bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
に編集
bookproject/book/templates/book/book_detail.html
を
class="btn btn-primary">編集する</a>
class="btn btn-primary">削除する</a>
に編集する
そしてサーバーを立ち上げてhttp://127.0.0.1:8000/book/1/detail/ にアクセスする
(venv) $ python manage.py runserver
するとこのような画面になる
本棚アプリケーションの作成【4-11】
データを更新する仕組みを作っていく
UpdateViewを作成していきます。
bookproject/book/urls.py
name='detail-book'),
name='delete-book')
を
に編集。
bookproject/book/views.py
を
に編集。
book_update.htmlファイルを作成します
(venv) $ touch book/templates/book/book_update.html
bookproject/book/templates/book/book_update.html
これでそれぞれのviewを作成することができました。
本棚アプリケーションの作成【4-10 DeleteViewを作成してブラウザ上でデータを削除できるようにしよう】
データを削除するための画面を作成する
DeleteViewを作成します。これはデータを削除する際に使われます
実際にコードを書いていきます
bookproject/book/urls.py
name='detail-book'),
を
name='detail-book'),
に編集
bookproject/book/views.py
を
に編集
book_confirm_delete.htmlファイルを作成していきます。
(venv) $ touch book/templates/book/book_confirm_delete.html
bookproject/book/templates/book/book_confirm_delete.html
これでDeleteBookViewの完成です