django チュートリアル1 Viewを作ってアクセスするまで
djangoを勉強します。
はじめはQiittaの内容等を参考に簡単なwebアプリを構築しようかと思いましたが、
チュートリアルが一番わかりやすそうなので、こちらにしました。
もしこれからdjangoを学ぶ人は下記のサイトを参考にしつつ、
理解の及ばないわからない部分について、このブログで補足してもらえれば幸いです。
docs.djangoproject.com
この記事では、ローカル開発環境の構築から、Viewを作成してアクセスするところまで取り扱います。
まず、環境構築です。
pythonを導入します。環境はwindows10です。
macの方はすいませんが、ここでは取り扱いませんので、他のサイトを参考にしてください。
個人的に上記のブログに出てくる所謂「パスを通す」部分の知識は必須だと思います。
これを読めば理解できます。
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
次はデータベースの設定をやっていきます。