スポンサーリンク

DjangoでのWebアプリ開発記事一覧

スポンサーリンク
この記事は約11分で読めます。

 

Djangoでの開発手順。超簡潔まとめ

venvで仮想環境の作成

 

Djangoでの開発手順

 

プロジェクトフォルダの立ち上げ

venvでの仮想環境の作成

プロジェクトの立ち上げ

mainフォルダの作成

プロジェクト立ち上げ直後の初期設定

メディア・スタティックフォルダの作成

アプリケーションの立ち上げ

 

 

main内のurls.pyにアプリケーションを登録

 

・フォルダツリーに新規追加はなし

■mainフォルダ内のurls.pyに追記

・プロジェクトフォルダ>src>main>urls.py

・2行目のライブラリのインポートに”include”を追記

・urlpatternsにアプリケーションフォルダ内のurls.pyを見に行く指示を追記↓

“path(‘[アプリケーションフォルダ名]/’, include(‘[アプリケーションフォルダ名].urls’)),”

・開発用サーバーを立ち上げて実際の画面を確認するには末尾に[アプリケーションフォルダ名]を入れる

例:http://127.0.0.01:8000/アプリケーションフォルダ名/

・この時点ではアプリケーションフォルダ内のurls.py,views.py,テンプレートがないので、開発用サーバーを立ち上げても404エラーが帰ってくる。

 

アプリケーションフォルダ内のurls.pyを作成

 

■アプリケーションフォルダ内にurls.pyを新規作成

・フォルダツリー

 

■アプリケーションフォルダ内のurls.pyに次のコードを記載

・プロジェクトフォルダ>src>アプリケーションフォルダ>urls.py

・urlpatterns内は今は空欄でOK。後でここにhtmlファイルなどへのパスを追記していく。

・urlpatternsが空欄で何にも紐づけられていないので、この時点では開発用サーバーを立ち上げても404エラーが帰ってくる。

 

アプリケーションフォルダ内でtemplatesフォルダを作成

アプリケーションフォルダ内でtemplatesフォルダを作成

 

■以下2つのフォルダを作成

・アプリケーションフォルダ内でtemplatesフォルダ

・templatesフォルダ内で[アプリケーションフォルダ名]_templates

・作成後のフォルダ構成

?htmlファイルなどはtemplatesフォルダ内にまとめておく理由を調べる

?templatesフォルダ内で、さらにフォルダを作成している理由を調べる

 

 

アプリケーションフォルダのurls.pyからテンプレートファイルとvies.pyへ紐づけ

アプリケーションフォルダ内のテンプレートフォルダ内に新しくhtmlファイルなどを作成した場合のurls.pyからの紐づけ方法について。

 

■htmlファイルを作成する

・templates>[アプリケーションフォルダ名]_templatesの中に新しくhtmlファイルを作成

・今回はindex.htmlを作成したものとする

・フォルダツリー内の[2]はviews.py編集時に使用する

・作成後のフォルダ構成

 

■vies.pyで関数を作成

・プロジェクトフォルダ>src>アプリケーションフォルダ>views.py

・urls.pyから接続リクエストを受けて、index.htmlを返すべき内容として渡す。

・今は何も処理を行っていないが、いわゆるビジネスロジックを後々index関数にさらに追記したり、別の関数を追加することで変数requestに載せる情報が増えていく。

・”return render(request, “[フォルダツリー[2]のフォルダ名]/index.html”)”は、第一引数にリクエスト時に渡された情報を持つ。また第二引数にはtemplatesフォルダ[3]からのパスを記載。

 

 

■urls.pyでviews.pyとhtmlファイルへ紐づけ

・プロジェクトフォルダ>src>アプリケーションフォルダ>urls.py

・冒頭、以下の通りviews.pyからindex関数をインポートしている。
”from .views import index”

・urlspatternsにviews.pyのどの関数へ紐づけるかを記載。第一引数がURL、第二引数がviews.py内の関数

”path(“”, index),”

・開発用サーバーを立ち上げた際は以下がURLになる。

“http:\\127.0.0.1:8000/アプリケーション名/”

・上記のURLはこれは、pathの第一引数を返すと変化する

“http:\\127.0.0.1:8000/アプリケーション名/[pathの第一引数]”

 

 

・ここまで、アプリケーションフォルダ内のurls.pyからviews.py内の関数とhtmlファイルへの紐づけを行ったことで、開発用サーバーを立ち上げてアクセスすることができるようになる。

・今後、view.pyへの関数の追加、htmlファイルの追加を行ったときは今回と同様にアプリケーションフォルダ内のurls.pyからそれぞれ紐づけを行う。

 

 

models.pyでモデルクラスを作成

 

・フォルダツリー。変更なし

 

■models.pyを編集

・プロジェクトフォルダ>src>[アプリケーションフォルダ]>models.py

・Modelクラスを継承したクラスを作成する

・モデルクラス名はデータベースが持つ各テーブルを指し、自由に決めることができる。学生の成績を管理するデータベースの場合は、学生と成績の2つのテーブルに分けることができる。これらをモデルクラス名としてそれぞれ定義することになる。

・[属性1]と[属性2]はテーブルが持つデータ。列名のイメージ

学生というテーブルがある場合は、名前、学籍番号、年次などにあたる

?どのようなフィールド(ModelField)が使えるか要確認

 

 

モデルクラスをmigrationsファイルへ変換

 

■コマンドプロンプトで以下を実行

・コマンドプロンプト:プロジェクトフォルダ>src

・models.pyに記載したモデルクラスをmigrationsファイルへ反映している。

・次にmigrateコマンドを実行することで実際にDBへの書き込みを行う。

 

migrationsファイルの内容をDBへ書き込む

 

■コマンドプロンプトで以下を実行

・コマンドプロンプト:プロジェクトフォルダ>src

・migrationsファイルの内容をDBへ実際に書きこんでいる

 

DBにカラムを追加

 

新規登録画面を作成

いわゆるCRUD機能のうち、C(Create)の部分を作る。

登録用画面(htmlファイル)を作り、views.pyとurls.pyを編集する。

 

・フォルダツリー。変更なし

 

■新規登録用のhtmlファイルを作成

・プロジェクトフォルダ>src>[アプリケーションフォルダ]>templates>[アプリケーションフォルダ名]_templates>[新規登録用ファイル名].html

・フォームとは利用者が入力する項目のこと、入力欄を用意し、アプリケーション側に送信することで必要なデータを指定して取得したり、データの登録・更新・削除などを行うことができる。

・<form method=”POST”>はこのフォームがPOSTメソッドを使うことを示す。アプリケーションはif文などを使いPOSTメソッドであることを把握した上で、データの登録や更新の処理を行う。

・{% csrf_token %}はPOSTメソッドを使う時に使用する。

・<div>~</div>は、このタグで囲った内容をグループ化し、CSSでスタイルを適用したりJavaScriptで操作したいときに使う。

・inputタグはテキスト入力用のフィールドを用意する。1行のみであり、複数行は入力できない。

name=”[フォーム名称]”は、[フォーム名称]の部分は自由入力。POSTメソッドで送信後、views.pyででこの名称を使ってこの画面(htmlファイル)のどのフォーム

 

■views.pyで新規登録を行う関数を作成

・プロジェクトフォルダ>src>[アプリケーションフォルダ]>views.py

 

・if request.POSTで、POSTメソッドの場合に、以降の処理を行うように定義している。

・[フォーム名称1,2]はhtmlファイルから渡された利用者の入力内容。今回の例では[新規登録用ファイル名].htmlに表示されている2つの入力用フォームのそれぞれのinputタグに入力されたデータを受け取っている。

・[モデルクラス]はmodels.pyで定義したクラス名。インポートしておく必要がある(1行目の部分)。[モデルクラス]の各属性にそれぞれ利用者の入力データをインスタンス変数objectに引数として渡す。

・object.save()でインスタンス変数objectの内容をデータベースに登録する。

 

■urls.pyでviews.pyへ紐づける

・プロジェクトフォルダ>src>[アプリケーションフォルダ]>urls.py

・urls.pyで、path関数を使って新しいURLパターンを作成する。

・第一引数には[新規登録用のURL]を指定する。自由に決めてよい。

・第二引数には[views.pyの新規登録用関数]を指定。views.pyで先ほど作成した関数を指定する。インポートが必要(2行目)。

・第三引数にはname属性を指定。このURLパターンの名前を決めている。自由に決めてよい。

 

他のページへのリンクを作成する

 

・フォルダツリー。変更なし

 

■urls.pyのメソッド・関数にname属性で名前を付与する

・プロジェクトフォルダ>src>[アプリケーションフォルダ]>urls.py

・path関数の第三引数のname属性を指定して各URLパターンに名前を付ける。

・htmlファイルなどから、ここでつけた名前を指定してそれぞれのhtmlファイルへリンクすることができる。

 

 

■htmlファイルにAタグとDjangoのテンプレートシステムを使ってリンクをはる

・プロジェクトフォルダ>src>[アプリケーションフォルダ]>templates>[アプリケーションフォルダ]_templates>[任意のhtmlファイル名].html

 

・[名前1,2]はurls.pyのpath関数でname属性で付けた名前を記述する。以下の[・・・]の部分に記述。

・{{% url ‘[・・・]’ %}}

・リンクテキストは自由に決めてよい。

 

 

 

その他

 

コマンドラインラインでshellを使ってデータを登録

 

■コマンドプロンプトで以下実行

・コマンドプロンプト:プロジェクトフォルダ>src

・shellを起動。データの読み込みや書き込み等ができる

 

■データの登録

・ベースフォルダはmanage.pyのあるフォルダ。shellを実行するときはこのフォルダが起点になる。

models.pyはベースフォルダから出発してアプリケーションフォルダ内の中にあるので、下記のように”[アプリケーションフォルダ名].models”としてパスを指定する。その後、models.pyの中で定義されているクラス名を指定してインポートする。

“from [アプリケーション名].models import [モデルクラス名]”

 

・変数objectはこれからデータベースに登録されるデータを保持するオブジェクト。その属性としてfield1,field2を持ち、モデルクラスに定義されている各フィールドを示す。開発者が2つ以上のフィールドを定義した場合は、引数がさらに増えることになる。

またvalue1,value2はDBに登録する値

 

コマンドラインラインでshellを使ってデータを取得

 

■コマンドプロンプトで以下実行

・コマンドプロンプト:プロジェクトフォルダ>src

・shellを起動。データの読み込みや書き込み等ができる

 

■データの取得