前回①のように
Djangoが無事に起動して基本画面を表示してくれたら今度は「Webアプリケーション」を作成しましょう。
といっても今回は静的ページに「HelloWorld!」と表示するだけのものですが、これが全ての基本ですので舐めないようにしましょう。
まず、manage.pyファイルのあるディレクトリからhelloアプリケーションを作ります。
$ python3 manage.py startapp hello
無事にアプリケーションが作成出来たらlsで中身を見てみましょう。
$ ls hello/
admin.py apps.py __init__.py migrations models.py tests.py views.py
この中のviews.pyというファイルがアプリケーションの基本中の基本となるファイルです。
views.pyからの返事が反映されます。
Djangoではこのviewsに入っている関数を「views関数」と呼び、用語として頻繁に出て来ますので覚えておきましょう。
では、views.pyにHelloWorld!と返答するプログラムを書いてみましょう。
$ nano hello/views.py
from django.shortcuts import render
from django.http.response import HttpResponse
# Create your views here.
def hello_world(request):
return HttpResponse("<h1>Hello World!</h1>")
内容はごく単純に、ファイル内のhello_world()関数が呼ばれたら"<h1>Hello World!</h1>"とreturnされるだけのものです。
次に、helloアプリケーション内にurls.pyというファイルを作ります。
$ nano hello/urls.py
これは初期状態では作成されていません。必ず必要というフィアルでは無いからです。プロジェクトを作った際に自動作成されたdraemon/urls.pyからも先ほどのviews関数を呼ぶ事ができるからです。
しかし、Djangoでは各アプリケーション毎にurls.pyを作成して管理することを推奨としているようですので作成します。実際大規模なサイトであればあるほど分割管理した方が都合が良いでしょう。
from django.conf.urls import url
from . import viewsurlpatterns = [
url('', views.hello_world,name="hello!"),
]
urls.pyでは「このurlsファイルに訪ねて来たら、views関数のhello_worldからの返答を返す」ことを表現しています。
次に、プロジェクトで自動作成されたurls.pyを編集します。
$ nano draemon/urls.py
こちらは先ほどのurls.pyへ割り振る役割です。
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, urlurlpatterns = [
path('admin/', admin.site.urls),
path('hello/', include('hello.urls')),
]
「(アクセスURL)/hello/」というリクエストがあればhello.urls.pyへ作業を流しています。
helloアプリケーション自体はここまでで体勢が整いました。
次に、プロジェクトに「hello」アプリケーションを登録します。
登録は簡単、
$ nano draemon/settings.py
でアプリケーション名'hello'を追記するだけです。
INSTALLED_APPS = [
'hello',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
出来たらサーバーを起動して
$ spython3 manage.py runserver 0:8000
ブラウザで呼び出してみましょう!
成功しましたか?
試しにいろいろ弄って試してみましょう。
例えば、先ほどの
$ nano hello/urls.py
を編集して
urlpatterns = [
url('world/', views.hello_world,name="hello!"),
]
とすれば、アドレスはhello/world/でアクセス出来ることになります。
おめでとうございます!
Dijangoはアプリケーションを起動することが出来ました。
次回はサーバーアプリApache2と連携テストをします。