1/99スタックエンジニアの適当記録

適当なことを書きます。関西で転職したいです。

django チュートリアル1 Viewを作ってアクセスするまで

djangoを勉強します。
はじめはQiittaの内容等を参考に簡単なwebアプリを構築しようかと思いましたが、
チュートリアルが一番わかりやすそうなので、こちらにしました。

もしこれからdjangoを学ぶ人は下記のサイトを参考にしつつ、
理解の及ばないわからない部分について、このブログで補足してもらえれば幸いです。
docs.djangoproject.com

この記事では、ローカル開発環境の構築から、Viewを作成してアクセスするところまで取り扱います。

まず、環境構築です。
pythonを導入します。環境はwindows10です。
macの方はすいませんが、ここでは取り扱いませんので、他のサイトを参考にしてください。

1.pythonの導入
qiita.com

個人的に上記のブログに出てくる所謂「パスを通す」部分の知識は必須だと思います。
これを読めば理解できます。
qiita.com

次に、djangoを入れる為に、pipを導入します。
2. pipの導入
不覚ながら自分でどうやって入れたのか覚えてないです。
おそらく、pythonの導入中にpipも一緒に入ると思います。
もし、pipがなければ、こちらの記事にeasy_installという入れ方があります。
試してみてください。
www.aoki.ecei.tohoku.ac.jp

pipはパッケージ管理ソフトです。
自分の記事で恐縮ですが、pipについての説明があります。
roku28632.hatenablog.com

3. djangoの導入
ようやく本編のdjangoを入れます。
pip install django コマンドです。
もし、エラーが出た場合、これならopenSSLを入れれば直ります。
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
さらに、sqliteのエラーが発生した場合はsqliteを入れてください。
www.kkaneko.jp

これで準備が整いました。

4. プロジェクトの作成
djangoでプロジェクトを作成していきます。
プロジェクト作成のコマンドです。

django-admin startproject mysite
│  db.sqlite3
│  manage.py
│
├─mysite
│  │  asgi.py
│  │  settings.py
│  │  urls.py
│  │  wsgi.py
│  │  __init__.py
│  │
│  └─__pycache__
│          settings.cpython-37.pyc
│          urls.cpython-37.pyc
│          wsgi.cpython-37.pyc
│          __init__.cpython-37.pyc

mysiteはプロジェクトの名前なので、なんでもいいです。
後で出てくるときに混乱するので、今回はそのままにしたほうがいいと思います。

django-adminコマンドは管理者権限の処理を行うためのコマンドラインユーティリティです。

詳しく知りたい場合はこちらに記載があります。
django-admin と manage.py | Django ドキュメント | Django

ちなみに、フォルダ構成は「 tree /F 」のコマンドで表示できます。

5. 開発サーバの起動
djangoには簡易な開発用サーバの機能があります。
開発用サーバを起動します。

$ python manage.py runserver

localhost:8000でアクセスして、
画面が表示されれば成功です。

6. Pollsアプリケーション

$ python manage.py startapp polls

pollsのアプリケーションが一式作成されます。

└─polls
    │  admin.py
    │  apps.py
    │  models.py
    │  tests.py
    │  urls.py
    │  views.py
    │  __init__.py
    │
    ├─migrations
    │      __init__.py
    │
    └─__pycache__
            urls.cpython-37.pyc
            views.cpython-37.pyc
            __init__.cpython-37.pyc


7. ビューを作る
ビューは三層アーキテクチャの概念の一つです。
知らない人は、ググってください。
ここでは説明しませんが、いろんな言語で使われる基本の概念なので、知っておくべきです。

polls/views.pyを作成していきます。

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

つぎにpolls/urls.pyを作成していきます。

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

最後にmysite/urls.pyを編集します。

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

8. pollsへアクセスしてみる

$ python manage.py runserver

localhost:8000/pollsでアクセスして、
「Hello, world. You're at the polls index.」が表示されたら完了です。

後半のpollsにアクセスする仕組みの部分の説明を書いていきます。
djangoでサーバを起動して、URLでアクセスすると、
URLディスパッチャがアクセス先を判定します。
djangoのURLディスパッチャはurls.pyです。URLconfという言い方もされます。

URLディスパッチャはプロジェクトのディスパッチャと、
アプリケーションごとのディスパッチャがあります。
先程記述した、polls/urls.pyがアプリケーションのディスパッチャで、
mysite/urls.pyがプロジェクトのディスパッチャです。


URLにアクセスします。

HTTPrequestが送られ、URLディスパッチャのmysite/urls.pyを呼び出します。

pathに記載されている第一引数を上から確認していき、適用する文字列を参照します。

path('polls/', include('polls.urls'))

includeでpollsのurlsが呼び出だされています。

pollsのurlsではviewsのindexが呼び出されています。

path('', views.index, name='index'),

polls/vies.pyのindexでは、httprequestオブジェクトを引数に、
HttpResponseオブジェクトを返します。

defindex(request):
                      return HttpResponse("Hello, world. You're at the polls index.")

HttpResponseオブジェクトは指定した文字列をページの内容として反映させます。

よって、ページに指定した
"Hello, world. You're at the polls index."
が表示されるのです。

HTTPのオブジェクトについては下記に詳しい記載があります。
深く追うとキリがないとは思いますが、興味があれば見てください。
djangoproject.jp

次はデータベースの設定をやっていきます。