巳年じゃないけど Python やろうぜ(その 4)
ちょっと前回の補足。
もし Python 3.6.0 しか入れていないか、もしくは Python 2.7.x の後に Python 3.6.0 をインストールしていて、なおかつ Python Launcher をインストールしていたなら、開発用サーバの起動は
>manage.py runserver
で行えます。その他の Django 用のコマンドも同様に実行できます。
Django アプリを作る
アプリを作るためのコマンドは「うまくいった!」のページに書いてありましたね。今回は hello
という名前のアプリを作ります。
>manage.py startapp hello
こんな感じで新たに hello
というフォルダができています。
django_test │ db.sqlite3 │ manage.py │ ├─django_test │ settings.py │ urls.py │ wsgi.py │ __init__.py │ └─hello │ admin.py │ apps.py │ models.py │ tests.py │ views.py │ __init__.py │ └─migrations __init__.py
Hello ページを作る
実際に Hello ページを作ってみましょう。django_test\hello\views.py
を編集して以下のようにします。
from django.http import HttpResponse def index(request): return HttpResponse('Hello, Django!')
Python のお作法として
- 関数定義などのブロックはインデント(半角スペース 4 個)で明示する
- 関数定義やクラス定義などの前には空行を二つ入れる
- ファイルの終端は改行で終わる
などがあります。だいたいは pep8 が教えてくれるので、その通りにやりましょう。
次に django_test\django_test\urls.py
を編集します。
from django.conf.urls import url, include # include を追加 from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^hello/', include('hello.urls')), # この行を追加 ]
コメントは分かりやすさのために入れてるので、実際には書かなくても大丈夫*1です。
これは何をやっているのかというと、http://localhost:8000/hello/
にアクセスしたら、それ以降の URL 文字列の処理を hello
アプリの urls
モジュールに委ねますよ、ということです。
なので、当然 django_test\hello\urls.py
を作成することになります。このファイルはあらかじめ用意されていないので、新規に作成します。
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index), ]
これで http://localhost:8000/hello/
にアクセスしたら、先ほど views.py
に書いた index
関数が呼ばれるようになりました。
最後に、settings.py
を編集して、hello
アプリが追加されたことをプロジェクトに教えてやります。
# Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'hello', # この行を追加 ]
さて、開発用サーバを起動して http://localhost:8000/hello/
にアクセスしてみましょう。
表示されました。でもこれ、本当にただのテキストです。HTML でも何でもありません。HTML を表示させるには HttpResponse
に HTML を渡す必要があります。でも直接長々と HTML を書き込むのは面倒ですよね。そこでテンプレートの登場となります。
*1:ちなみに行末にコメントを書くときは半角スペース 2 個分開けてから書きなさい、と pep8 が教えてくれました。