Django開発~ブログ構築編1~プロジェクト作成

django

学習記録

の続きです。

ブログアプリの作成

定番だと思いますが、ブログを作ってみましょう。

django-lesson配下にterminalで移動していることを確認後、以下のコマンドを実行してください。

このコマンドは、Makefileに記述されたDjangoのアプリケーションを作成するためのコマンドです。

これで、アプリケーションを作成するために必要なフォルダが作成されます。

app フォルダ配下にあるsettings.pyファイルに作成したアプリケーションを認識させる設定を加えましょう。

DBの導入

Djangoは、デフォルトで、sqliteというデータベースを使います。

しかし、現場では、MySQLやPostgreSQLの方がよく使われるので、ここではPostgreSQLを使用することにします。

Djangoアプリケーション開発 ~事前準備編~」では、PostgreSQLのコンテナを作成しているので、DjangoとPostgreSQLを連携する設定を行います。

appフォルダ内にあるsettings.pyの「DATABASES」の設定ファイルを以下のように書き換えてください。

os.environ.getは、docker-compose.ymlに設定した環境変数の値を取得します。

コンテナを立ち上げていた場合は、Ctrl + c でコンテナを停止した後、以下のコマンドを打ち込んでください。

localhost:8000にアクセスして、Djangoのスタート画面が表示されたら成功です。

補足)
コンテナ立ち上げ時に「dオプション」を指定しました。

このオプションは、コンテナをバックグランドで起動します。

停止したい場合は、以下のコマンドを実行してください。

ログを見たいときは、以下のコマンドを実行してください。

投稿モデルの作成

投稿モデルを作成してみましょう。

Djangoでは、モデルの作成をアプリケーション配下のmodels.pyに記述します。

このファイルは、アプリケーション作成時に一緒作成されます。

Djangoでは、このモデルに記載した内容からデータベースを作成します。

データベースを作成するためには、マイグレーションを行う必要があります。

以下のコマンドを実行してみましょう。

データベースの作成に成功したか確認するために、blogアプリケーション配下のadmin.pyに以下の記述を行いましょう。

Djangoの便利機能の一つに、管理画面があります。

ブラウザ上で、「localhost:8000/admin」と打ち込むと管理画面に遷移することができます。

ただし、管理者権限を持つユーザーを作成しないとログインできません。

以下のコマンドで作成しましょう。

作成した管理ユーザーにて、ログインしてみましょう。

Postモデルはありましたでしょうか?

「Posts」になっていると思いますが、Djangoの仕様なので気にしないでください。

「+Add」を押下して、適当にデータを追加してみましょう。

データが登録されたら、問題なく動作しています。

Viewの作成

Djangoでは、views.pyにクライアントからのリクエストを裁く処理を記載します。

投稿一覧と投稿詳細を作成してみましょう。

URLの作成

続いては、URL を作成しましょう。

例えば、ブラウザ上で、「localhost:8000」と打ち込んだ時に、サーバー側で実行した処理を指定するときに使用します。

実際、コードを見てもらった方がはやいでしょう。

Djangoでは、urls.py 内にその記述を行いますが、blogアプリケーションを作成時には、一緒に作成されないので、新たに作成します。

では、処理内容を記述します。

実は、appプロジェクト内にもurls.pyが存在しているので、そちらにも変更を加えます。

Canonical URL の設定

ブログらしく、Canonical URL の設定も加えておきます。

一応、マイグレーションをしておきましょう。マイグレーションは、データベースの構造(カラムやプロパティ)を変更した時に、データベースに変更内容を適用します。

templateファイル

views.pyで処理したデータをtemplateファイルに渡し、それを画面上に表示させます。

それぞれのファイルに以下を記述しましょう。

動作確認

ここまで設定できたら、動作確認してみましょう。

「localhost:8000/blog」にアクセスしてみましょう。

上記の画面が表示されましたでしょうか。

詳細画面も表示してみましょう。(例「http://localhost:8000/blog/2019/8/17/first-post/」)

もしかしたら docker-compose down の影響で以下の事象が発生するかもしれません。

・データが削除された
・localhost:8000/blogにアクセスしてもエラー画面が表示される

「docker-compose down」は、既存のコンテナを完全に削除します。Dockerの設定が不十分の場合はデータが消えたり、データベースとアプリケーションの連携がうまく行かなくなる可能性があります。docker-compose logs コマンドでエラー内容を確認してみてください。

おわりに

次は、投稿ページを作成してみましょう。^^

コメントを残す