🐍
【Python】docker&DjangoでViewを表示させる
開発環境:
- windows 11
- Vscode 1.87.2
- Docker 26.1.1
- Docker-compose 2.27.0
- python
- Django
達成目標
- アプリケーションフォルダに
view
とURLconf
を定義することができる。 - アプリケーションフォルダ内とプロジェクトフォルダ内のURLを管理することができる。
前提
- Djangoのマニュアルの
Writing your first Django app, part 1
に準ずる内容となっている。
- アプリケーションのトップページが表示されている状態から解説をしていく。
開発環境の構築がまだの方はこちらから↓
基礎編
1.ビューの定義
アプリケーションフォルダ内のviews.pyに表示内容を記述
アプリケーションフォルダ/views.py
from django.shortcuts import render
# Create your views here.
## 以下を追加
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
## ここまで
-
index(request)
:Djangoビューとして定義されている関数(ビュー関数)。 -
HttpResponse
:HttpResponseオブジェクトを返す。テキスト(ここではHello, world. You're at the polls index.)をブラウザに表示させるために使います。 -
request
:ビューに渡すHTTPリクエストオブジェクトです。
2.URLconf(URL構成)の定義
アプリケーションフォルダ内のurls.pyフォルダを作成
アプリケーションフォルダ内のurls.pyフォルダを作成
New-Item users/urls.py
views.pyフォルダを編集
views.pyに以下を全て追加する
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
urls.py
にアプリケーションのurls.py
を含める
3.プロジェクトのfrom django.contrib import admin
from django.urls import path
from django.urls import path, include #追加
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')), #追加
]
4.動作確認を行う
http://localhost:8000/users/
にアクセスし、表示を確認する。
応用編(テンプレート使用)
1.テンプレートフォルダを作成
テンプレートフォルダを作成
mkdir users/templates/users
テンプレートファイルを作成
New-Item users/templates/users/edit.html
edit.html
ファイルを編集
2.以下のコードを全て追加する
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Edit Page</title>
</head>
<body>
<h1>Edit Page</h1>
<p>This is the edit page.</p>
</body>
</html>
3.ビューファイルを編集
views.pyファイルに以下を全て追加
def edit(request):
return render(request, 'users/edit.html') # テンプレートファイルのパスを指定
4.プロジェクト設定フォルダ内のテンプレート設定の編集
settings.py ファイルに、TEMPLATES 設定が正しく指定されていることを確認
from pathlib import Path # 追加
BASE_DIR = Path(__file__).resolve().parent.parent # 追加
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, 'users', 'templates'], # 追加
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
BASE_DIRとは
BASE_DIR
はプロジェクトのルートディレクトリを示す。
BASE_DIR
を付けてテンプレートフォルダを指定することが望ましい。
ファイルディレクトリ
myproject/ # プロジェクトフォルダ
├── manage.py
├── reha_navi/ # プロジェクト設定フォルダ
│ ├── settings.py
│ ├── urls.py
│ └── ...
├── users/ # アプリケーションフォルダ
│ ├── templates/
│ │ └── users/
│ │ └── edit.html # このファイルが必要
│ ├── views.py
│ ├── urls.py
│ └── ...
5.コンテナを再起動して動作を確認する
コンテナ再起動
docker-compose restart
参考
Discussion