Djangoで自作したブログサイトに投稿機能をつけて記事を投稿できるようにしよう
Djangoで自作したブログサイトに今回は記事の投稿機能をつけてみましょう。Djangoの自作ブログの投稿機能は、models.pyとviews.pyにて関数とクラスを定義することで作ることができます。
Djangoのブログに投稿機能をつけよう
今回はDjangoでブログ記事を投稿するためにmodels.pyやurls.pyのコードを書いていきます。
目次
01. Djangoの投稿機能のモデルを追加
02. 投稿機能を使うためにurls.pyにコードを追加
03. Djangoのブログで使う投稿フォームを作成
04. まとめ
01. Djangoの投稿機能のモデルを追加
モデルを追加する前にやらなければならないことがあります。
まずやらなければならないこと。
それはDjangoのアプリケーションフォルダを作成することです。
前回作成したのはプロジェクトフォルダであって、アプリケーションフォルダではありません。
Djangoのプロジェクトフォルダはアプリの設定や時間軸などの基本的な情報のファイルをまとめるものです。
一方DjangoのアプリケーションファイルはDjangoに追加したい機能などの情報のファイルをまとめるものです。
難しそうに聞こえますが作成方法は簡単です。
画質が少々荒くて申し訳ありません。
この画像のようにblog_appが生成されていると思います。
まずはアプリケーションフォルダが生成されていることを確認して下さい。
次にプロジェクトフォルダのsettings.pyを開いて下さい。
このコードと同じになるようにDjangoのsettings.pyファイルのINSTALLED_APPSの中身にblog_appを追加して下さい。
次にblog_appの中にあるmodels.pyをエディタで開いてください。
Djangoのアプリケーションフォルダのmodels.pyの中にこのコードを書いて下さい。
models.pyではデータベースやテーブル名などの値を設定します。
Djangoではある程度枠組みが用意されています。
今回は投稿機能に必要なTag機能とPost機能を追加しました。
Tag機能にはmodels.CharFieldでタグに名前をつけられるようにしています。
ユーザーの入力によって名前を決めることができるようにしているというわけです。
投稿機能にはタイトルと本文と画像、作成日時、タグ、ユーザー名を投稿するデータとして型を作っています。
imageのところにあるblank=Trueは画像がなくてもエラーが発生しないことを示しています。
on_deleteはタグを削除したときにそのタグを含むPostを削除するかどうかを決めています。
PROTECTは直ちに削除しないことを表しています。
selfはインスタンス自身を指す慣用語です。
よくわからなければ基本的に引数のところに書くんだなと覚えておきましょう。
02. 投稿機能を使うためにurls.pyにコードを追加
次にDjangoのアプリケーションフォルダにurls.pyを作成しておきます。
urls.pyはDjangoのプロジェクトフォルダには最初からありますが、アプリケーションフォルダには用意されていません。
そのため自分で作る必要があります。
urls.pyには上記のコードを記入しておきましょう。
urls.pyではWeb上でのurlの表示を定義します。
ブログのテンプレートを作成したら表示のために使用します。
blogの中にあるurls.pyに追加したblog_appのurls.pyを読み込ませておきます。
こうすることでPythonファイル間の連携をすることができます。
03. Djangoのブログで使う投稿フォームを作成
次にフォームを作成してユーザーからの入力を受け付けましょう。
まずはDjangoのアプリケーションフォルダにforms.pyを作成して下さい。
投稿をするためのフォームはこれで完成です。
モデルはPostを参照します。
フィールドはタイトル、テキスト、画像、タグです。
つまりユーザーはこれらのフィールドを入力することが要求されます。
クラスMetaについてはselfと同じように少しわかりにくい内容ではありますが、簡単に説明するとMetaと定義することで情報を読み取って定義している親クラスにデータベースアクセスに関連する追加の情報や機能を挟んでくれます。
ちょっと何言ってるかわかんないですね。
とりあえず、クラスに対して追加の情報や機能を挟むためMetaクラスを使用して追加をしているといったイメージで大丈夫です。
04. まとめ
お疲れ様でした。
ここまで読んでいただきありがとうございました。
今回は記事の投稿に必要なものを準備しました。