LoginSignup
5
1

More than 5 years have passed since last update.

Djangoで"Hello World"を表示するまで②

Last updated at Posted at 2017-12-30

https://qiita.com/TsubasaTakagi/items/59b4eef258acb64cc113#_reference-cfaaaf44b64252b5e014の続き

ここからは、実際にwebページに"Hello World!"と表示させるコードを記述していく

viewの記述

まず、django.httpというパッケージからHttpResponseクラスをimportします。

views.py
from django.http import HttpResponse

「django.httpという便利箱から、HttpResponseという便利グッズを使いますと宣言している」と理解しておけば大丈夫でしょう。

HttpResponseの役割としてとは、ページに文字列を引き渡したり、文字列を表示させたりします。

そして、

views.py
def index(request):
    return HttpResponse("Hello World! このページは投稿のインデックスです。")

と追記することで、先ほどimportしたHttpResponseを使い、文字列を返すように定義する。

ルーティングファイルの設定

文字列を表示する部分は作成したので、次はユーザーがページにアクセスしたときに、どのviewを返すかを記述してあげる。
そのためには、プロジェクトにurlを渡された時と、アプリケーション内でurlを渡された時との2通り書かなければなりません。

まず、アプリケーション内にurlを渡されたとき。

postsディレクトリにurls.pyというファイルを新しく作ってください。
そのpostsの中に作ったurls.pyに

urls.py
from django.conf.urls import url

と記述してあげる。これは先ほどと同様、「django.conf.urlsというパッケージという名の便利箱からurlというグッズをしようします」という意味です。(postsというアプリケーション内のurl.pyであることに注意)

次に、以下のように書いてあげる。

urls.py
from . import views

これは、同じディレクトリ階層("."は同じ階層を表す)の中のviews.pyというファイルを読み込みますという宣言である。

これらを記述したら、

urls.py
urlpatterns = [url(r'^$',views.index, name = 'index')]

と同ファイルと書くことで、ユーザーが渡してきたurlがアプリ内でどのファイルを読み込むべきかを記します。

コードの意味としては、r''の部分に記述したurlが渡された時に、viewsファイルの中の、indexというクラスを実行してください、というふうに書かれている。
^$は、正規表現と言うのだが、ややこしくなるのでここでは、「特にurlの指定がなければ」という意味だと理解してください。つまり、urlになにも書かれていないときの書き方が、^$なのである。

これでアプリケーションのurl指定は終わり。次はプロジェクトのurl指定のとき、
今度はプロジェクトのurlなので、myblogappというプロジェクト内のurls.pyに書き込む。

urls.py
from django.conf.urls import url

という行を

urls.py
from django.conf.urls import include, url

とincludeを追加してあげる。これは他のファイルを使う時に必要な表記である。

そして、

urls.py
urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

という部分に先ほどと同様に、urlパターンを書いていく。

urls.py
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^posts/', include('posts.urls')),
]

これでプロジェクトのurlの定義も終わったので、サーバーを立ち上げて
http://127.0.0.1:8000/posts/にアクセスすると、

スクリーンショット 2017-12-30 18.28.54.png

期待通り、Hello World!が表示されるようになる。

以下、読まないこと

//要確認(わからなかった部分)

views.py
def index(request):
    return HttpResponse("Hello World! このページは投稿のインデックスです。")

?????引数のrequestのとは?????

urls.py
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^posts/', include('posts.urls')),
]

?????includeってなに?????

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1