DjangoでWebアプリを作りたい【第2回 Viewの作成】
前回までで開発環境が整いました。いよいよアプリケーションを作成していきます。
Djangoで書かれたアプリケーションはPythonパッケージから出来ており、ある規約にしたがってPythonパスのどこかに置かなければなりません。しかしそのパス群を提供する仕組みが存在するため、ディレクトリ構造を気にせずコーディングをすることが出来ます。
アプリケーションはPythonパスの何処にでも置くことが出来ますが、今回はmanage.pyと同じ階層につくり、自身のトップレベルのモジュールとしてimportできるようにします。
アプリケーションの作成
今回はチュートリアルに習って投票アプリ(polls)を作成したいと思います。アプリケーションを作成するには、manage.pyのある階層へ移動して
$ python manage.py startapp polls
と入力します。すると以下の様なディレクトリ構造になります。
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
はじめてのview
最初のviewを書いてみましょう。polls/views.pyを開いて以下のコードを追記します。
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
これはDjangoで最もシンプルなビューです。このViewを呼ぶために、ViewとURLをマッピングしなければなりません。そのためにURLconfを編集します。
まずディレクトリpolls内に、urls.pyというファイルを作成します。ファイル構成は以下のようになります。
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py
そしてpolls/urls.pyに以下の様なコードを記述します。
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name="inedex"), ]
これでpollsのurlと、polls.views.indexがリンクされました。次にRootのurls.py(mysite/urls.py)を以下のように編集します。
from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^polls/', include('polls.urls')), url(r'^admin/', include(admin.site.urls)), ]
これでmysite(root)のurlとpolls.urlがリンクされました。このようにすることでトップからアクセスすることが出来ます。
$python manage.py runserver
localhost:8000/pollsにアクセスすると”Hello, world. You're at the polls index.”と表示されているはずです。
url関数
urlとview、もしくはurlとurlpatternを結びつける関数です。第一引数はurlの正規表現、第二引数はView、第三引数(optional)は逆引き用です。
include関数を利用した場合、matchした部分を除いた部分が次のurlpatternsに渡されます。