https://qiita.com/TsubasaTakagi/items/59b4eef258acb64cc113#_reference-cfaaaf44b64252b5e014の続き
ここからは、実際にwebページに"Hello World!"と表示させるコードを記述していく
viewの記述
まず、django.httpというパッケージからHttpResponseクラスをimportします。
from django.http import HttpResponse
「django.httpという便利箱から、HttpResponseという便利グッズを使いますと宣言している」と理解しておけば大丈夫でしょう。
HttpResponseの役割としてとは、ページに文字列を引き渡したり、文字列を表示させたりします。
そして、
def index(request):
return HttpResponse("Hello World! このページは投稿のインデックスです。")
と追記することで、先ほどimportしたHttpResponseを使い、文字列を返すように定義する。
ルーティングファイルの設定
文字列を表示する部分は作成したので、次はユーザーがページにアクセスしたときに、どのviewを返すかを記述してあげる。
そのためには、プロジェクトにurlを渡された時と、アプリケーション内でurlを渡された時との2通り書かなければなりません。
まず、アプリケーション内にurlを渡されたとき。
postsディレクトリにurls.pyというファイルを新しく作ってください。
そのpostsの中に作ったurls.pyに
from django.conf.urls import url
と記述してあげる。これは先ほどと同様、「django.conf.urlsというパッケージという名の便利箱からurlというグッズをしようします」という意味です。(postsというアプリケーション内のurl.pyであることに注意)
次に、以下のように書いてあげる。
from . import views
これは、同じディレクトリ階層("."は同じ階層を表す)の中のviews.pyというファイルを読み込みますという宣言である。
これらを記述したら、
urlpatterns = [url(r'^$',views.index, name = 'index')]
と同ファイルと書くことで、ユーザーが渡してきたurlがアプリ内でどのファイルを読み込むべきかを記します。
コードの意味としては、**r''**の部分に記述したurlが渡された時に、viewsファイルの中の、indexというクラスを実行してください、というふうに書かれている。
**^$は、正規表現と言うのだが、ややこしくなるのでここでは、「特にurlの指定がなければ」という意味だと理解してください。つまり、urlになにも書かれていないときの書き方が、^$**なのである。
これでアプリケーションのurl指定は終わり。次はプロジェクトのurl指定のとき、
今度はプロジェクトのurlなので、myblogappというプロジェクト内のurls.pyに書き込む。
from django.conf.urls import url
という行を
from django.conf.urls import include, url
とincludeを追加してあげる。これは他のファイルを使う時に必要な表記である。
そして、
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
という部分に先ほどと同様に、urlパターンを書いていく。
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^posts/', include('posts.urls')),
]
これでプロジェクトのurlの定義も終わったので、サーバーを立ち上げて
http://127.0.0.1:8000/posts/にアクセスすると、
期待通り、Hello World!が表示されるようになる。
以下、読まないこと
//要確認(わからなかった部分)
def index(request):
return HttpResponse("Hello World! このページは投稿のインデックスです。")
?????引数のrequestのとは?????
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^posts/', include('posts.urls')),
]
?????includeってなに?????