前回の続きです。
半分は udemy 「【3日でできる】はじめての Django 入門」の内容の備忘録になります。
デフォルトプロジェクトにアプリケーションを追加する
以下のように「posts」というアプリケーションを追加します。
(posts: 投稿ページ的な感じ)
(env1) C:¥Users¥hoge¥myfirstapp> python manage.py startapp posts
これで、postsフォルダが以下のように自動生成されます。
└─posts
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ urls.py
│ views.py
│ __init__.py
│
└─migrations
└─ __init__.py
ファイル名 | 役割 |
---|---|
admin.py | |
apps.py | アプリの Config (postsConfig というクラスが入っている) |
models.py | DB と Web ページを連携するための設定 |
tests.py | |
urls.py | URL とアプリの紐付け(ルーティング)を担うっぽい |
views.py | ページ整形情報 |
__init__.py |
親プロジェクトと posts の連携
親プロジェクト(myfirstapp)から posts アプリを呼び出せるようにするために、myfirstapp\settings.py
に postsConfig
クラスを記述します。
# myfirstapp\setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'posts.apps.PostsConfig', # これ追加
]
これにより、myfirstapp 側(プロジェクト側)から、posts(アプリ側)を import
で参照ができるようになります。
ルーティングとビューの処理フロー
Django では、以下の図のようにブラウザから受けたリクエストを処理(ルーティング)して結果(ビュー)を返しているらしいです。
これを受けて、以下のように myfirstapp\url.py
、posts\rul.py
と posts\views.py
を書いていきます。
ビューの作成
posts\viwes.py
を以下のようにします。
この場合、具体的には「index」という名前のビューを作っていることになります。
from django.shortcuts import render
from django.http import HttpResponse
# index というページを意味する関数
def index(request):
# 文字列を返す
return HttpResponse("Hello World! this is index.")
# Create your views here.
ルーティングの作成
上の絵にも書いていますが、Web ブラウザから URL にアクセスした際の処理(ルーティング)としては、
ブラウザ → プロジェクト → postsアプリ
という順場になります。
つまり、今回の場合だとルーティングは2つ存在します。
アプリ内
posts\urls.py
を作成し、以下のように記述します。
from django.urls import path
from . import views
# この配列にビューとURLのマッピングを追加していくことで、URLアクセスでページの表示ができるようになる
urlpatterns = [
path('', views.index, name='index') # 「index」という URL にアクセスすると、「views.index」を返す
]
プロジェクト内
myfirstapp\urls.py
を以下のように記述します。
from django.urls import path, include # include を追加すると、他のファイルが参照できるようになる
from django.contrib import admin
urlpatterns = [
path('posts/', include('posts.urls')), # 「posts/」で始まる場合、postsアプリを参照する。具体的に「posts.urls」ファイルを参照し、URLにアクセスできるようにする
path('admin/', admin.site.urls),
]
プロジェクトを起動してみる
以下を実行し、Django 内臓のサーバーを起動し、myfirstapp プロジェクトを起動します。
(env1) C:¥Users¥hoge¥myfirstapp> python manage.py runserver
ブラウザにて http://127.0.0.1:8000/posts/ にアクセスし、posts アプリケーションの index ビューを表示します。
(http では、html ファイルを指定しなかったら、デフォルトで index のページが呼び出せれる)
posts\viwes.py
に記述した index 内の文字列が表示されていることがわかります。
コメント