やりたいこと
- Djangoを初めて触る。
- Djangoのルーティングを試したい。
- CakePHPなどMVCフレームワークのルーティングは実装経験がある。
- class-based view と function-based view の使い分けなどは後日。
前提
- 環境はCentOS8+Anaconda+Djangoで構築済み。手順 https://qiita.com/kenichiro-yamato/items/1a459e7dc0ad0223e55e
- appは
/home/yamato/myapp
に作成済み。
設定ファイル urls.py
URLとクラス・ファンクションの対応付けを設定するファイル。
CakePHPの routes.php
に相当するもの。
vi /home/yamato/myapp/myapp/urls.py
urlと、それに対応するクラス、ファンクションを下記のように記載する。
from django.contrib import admin
from django.urls import path
import myapp.views as hello
urlpatterns = [
path('admin/', admin.site.urls),
path('hoge/', hello.index),
]
hoge
がurlで、hello.index
がクラス・ファンクション。
ビューファイル views.py
views.py は、myapp作成時点ではデフォルトでは存在していないので、
まずはファイルを新規作成する。
urls.py と views.py を同じディレクトリに置く。
vi /home/yamato/myapp/myapp/views.py
下記のようにファンクションを実装する。
from django.http import HttpResponse
def index(request):
return HttpResponse("I am Kenichiro-Yamato.")
解説
ブラウザから
http://192.168.1.xx:8000/hoge/
にアクセスした際、下記のように表示させたいとする。
これは、下記の2ステップで実装できる。
(1) views.py を作成する。
vi /home/yamato/myapp/myapp/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("I am Kenichiro-Yamato.")
- function名が
index
である点に着目。 - ファイル位置が
/home/yamato/myapp/myapp
である点に着目。
(2) urls.py に追記する。
vi /home/yamato/myapp/myapp/urls.py
from django.contrib import admin
from django.urls import path
import myapp.views as hello
urlpatterns = [
path('admin/', admin.site.urls),
path('hoge/', hello.index),
]
-
import myapp.views as hello
に着目。 -
path('hoge/', hello.index),
に着目。
修正してみる。
views.py を下記のように修正。
from django.http import HttpResponse
def printMessageFromYamato(request):
return HttpResponse("I am Kenichiro-Yamato.")
- ファンクション名を
index
からprintMessageFromYamato
に変更した。
urls.py を下記のように修正。
from django.contrib import admin
from django.urls import path
import myapp.views as view
urlpatterns = [
path('admin/', admin.site.urls),
path('yamato/', view.printMessageFromYamato),
]
-
import myapp.views as view
に修正した。 -
path('yamato/', view.printMessageFromYamato)
に修正した。
にアクセスして下記が表示されたらOK。