PythonDjango4 超入門を読みながら作成しています。
書籍リンクはこちら→リンク(https://www.shuwasystem.co.jp/book/9784798062419.html)
環境
- Win10
- VScode
- Python3.12.4(venv)
- モジュールのバージョンに関しては書籍と同じです。(requirement.txt)
1章 djangoの始め方
pip install Django==4.2.2
を実行した後、
django-admin startproject django_app
と打つことで、プロジェクトのフォルダを作成します。
ファイル名 | 機能 |
---|---|
initi.py | Djangoの初期化処理 |
asgi.py | ASGIという非同期Webアプリケーションのためのプログラム |
settings.py | プロジェクトの設定情報 |
urls.py | プロジェクトのURLを管理するファイル |
wsgi.py | WSGIというWebアプリケーションのプログラム |
pythonでdjango_appフォルダ内でpython manage.py runserver
を実行する
2章 ビューとテンプレート
新しいアプリケーションを作るにはpython manage.py startapp "アプリ名"
で作成します。
作成したアプリケーションのフォルダ内はこのようになっています。
ファイル名 | 機能 |
---|---|
「migrations」フォルダ | マイグレーションといって、データベース関係の機能のファイルがまとめられます |
initi.py | アプリケーションの初期化処理 |
admin.py | 管理者ツール |
apps.py | アプリケーション本体の処理をまとめる |
models.py | モデルに関する処理を記述するもの |
tests.py | プログラムのテスト |
views.py | 画面表示 |
views.pyを編集したけど、表示ができない...!
新しく作成したアプリケーション(hoge)内のviews.pyで下記のようなコードを書いただけではhost:8000/hogeにアクセスしても表示することは出来ません。
def index(request):
return HttpResponse("Hello")
hoge/urls.pyを書き換える事で表示部分を作成します。
views.pyではindexページの定義だけを行っており、urls.pyで定義された物を呼び出せるようにするイメージですね...!
urls.pyは下記のように定義します。
#hoge/urls.py(新規作成)
from django import urls
from . import views
urlpatterns = [
urls.path('', views.index, name='index'),
]
#プロジェクトフォルダ/urls.py
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('hoge/', include('hoge.urls'))
]
プロジェクトフォルダのurls.pyでinclude('hoge.urls')を追加することによってhogeフォルダのurls.pyが読み込まれるようになります。
とっても分かりやすい...?
Memo
- urlpatternsを修正することでhoge/?id=1?nickname=taroではなくhoge/id/nicknameのようなクエリパラメータを作れる。(P70)
テンプレートの使い方
テンプレートを使うことでhtmlでの表示+pythonの処理のようなページが作れるようになります。テンプレートを利用するには最初にアプリケーションの登録を行う必要があります。
方法としてはプロジェクトフォルダのsettings.pyのINSTALLED_APPS変数に作成したアプリケーション名を追加するだけですね。
INSTALLED_APPS = [
'hoge', # Add this line to the list of installed apps
]
テンプレートの作成
アプリケーションのフォルダーに新しくtemplatesフォルダを作成します。そして、templatesフォルダの中にアプリケーション名のフォルダを作成します(ちょっとややこしいですね(笑))。
templatesフォルダ内のアプリケーション名フォルダ内にindex.htmlを作成し、自由に記述します。
urlpatternsの修正
urlpatterns = [
path('',views.index,name='index')
]
/アプリケーション名/を開いた際にviews.pyのindex関数が呼び出されます
views.pyの修正
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return render(request, 'hoge/index.html')
index関数の中でrender関数を使うことでテンプレート内のindex.htmlを表示できます
{% %}はテンプレートタグ
Pythonのコード等を記述して表示を変えたい場合は{% %}を用いる必要があります。
ビュー関数のクラス化
class Helloview(TemplateView):
def __init__(self):
#初期化
def get(self, request):
#処理を書く
def post(self, request):
#処理を書く
return
ビュー関数をクラス化する事によってrequestがgetの時とpostの時の動作を一括で管理できるようになります。基本的にviewはこのようにしていくのかな...?