コンテンツへスキップ

urls, views, templates

webアプリのホームページには標準でhttp://localhost:8000/でアクセスします。ホームページや特定のページ(例: http://localhost:8000/test/) を開いたときに何を表示するかを設定するために、urlsとviewsとtemplatesを使用します。

設定方法

  1. Git bashを管理者として実行し、djangoのインストールされている仮想環境を起動します。
source env/Scripts/activate
  1. djangoプロジェクトフォルダ内のurls.pyをエディタで開くと、初期状態で以下が記載されているはずです。path()の1つめのパラメータでurlを指定し、2つ目のパラメータで表示するページを指定しています。例えば、初期状態であれば、http://localhost:8000/admin/のURLにアクセスすると、admin.site.urlsが開かれます。
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]
  1. 特定のページにアクセスすると、views.pyで定義するシンプルなhtmlが開かれるように設定してみます。urls.pyを以下のように書き換えます。
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home),
    path('test/', views.test)
]

urls.pyと同じディレクトリにviews.pyを作成し、以下の内容を書き込みます。ホームページにアクセスすると、「Home」と表示され、http://localhost:8000/test にアクセスすると「Test」と表示されるはずです。

from django.http import HttpResponse

def home(request):
    return HttpResponse('Home')

def test(request):
    return HttpResponse('<h1>Test</h1>')    
  1. views.pyHttpResponse()の中に複雑なHTMLを書き込むのはカッコ悪いので、templatesに切り出します。djangoプロジェクトのmanage.pyのあるルートディレクトリにtemplatesというフォルダを作成します。そのフォルダの中に、home.htmlというファイルを作成し、以下のような適当なHTMLを書き込んでみます。
<h1>Home page html</h1>

上記のhome.htmlを参照するようにview.pyを以下のように書き換えます。

from django.http import HttpResponse
from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

def test(request):
    return HttpResponse('<h1>Test</h1>')    

最後に、settings.pyをエディタで開き、TEMPLATESDIRSにtemplatesフォルダの存在を教えてあげます。これで各ページのHTMLを個別のHTMLファイルで定義できるようになりました。

'DIRS': ['templates'],