#Djangoで"Hello world"までやってみよう
Djangoのインストールは実施済として記載していきます。
HTML, CSS, Javascriptとの連携までやっていきます。その第1回目。
参考:https://docs.djangoproject.com/ja/2.2/intro/tutorial01/
##Djangoが使用できる環境を用意
$ django-admin startproject practice
$ cd practice ; tree ./
.
├── manage.py
└── practice
├── __init__.py
├── settings.py
├── urls.py
$ mv practice/ config/
・practice
という、Djangoが使用できる環境(フォルダ)を作りました。
その配下には、manage.py
ファイルと、practice
フォルダがあります。
practiceフォルダが2つあるとややこしいので、配下のフォルダを変更します。
(practice
フォルダをconfig
に)
・manage.py
:Djangoで実行する際に使用するコマンド(スクリプト)です。
configフォルダ配下には、以下4つのファイルが自動で作成されます。
・__init__.py
:pythonのパッケージだよと、教える空っぽのファイル。
・settings.py
:設定を管理するファイル。
・urls.py
:作ったアプリケーションの、URLへのパスを管理するファイル。
・wsgi.py
:webサーバーとの接続口
*WSGI = Web Server Gateway Interfaceの略
#### practice/manage.py
****
def main():
#第二引数を'config.settings'に変更
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
****
#### practice/config/wsgi.py
****
def main():
#第二引数を'config.settings'に変更
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
****
#### practice/config/settings.py
****
def main():
#'config.urls'に変更
ROOT_URLCONF = 'config.urls'
****
#'config.wsgi.application'に変更
WSGI_APPLICATION = 'config.wsgi.application'
****
##アプリケーションを作る
$ python manage.py startapp myapplication
$ tree ./myapplication/
myapplication/
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
・admin.py
:「ブラウザで編集できる管理ページ」、に関するファイル。
・apps.py
:アプリケーションとDjango環境の接続口。
・models.py
:アプリケーションとデータベースの接続口。
・tests.py
:テストを書く場所。
・views.py
:ビュー(画面への出力)への挙動。
##アプリケーションのビューを設定
#### practice/myapplication/views.py
from django.http import HttpResponse
#index関数にHTTPリクエストがあったら、"Hello, world."のHTTPレスポンスを返す
def index(request):
return HttpResponse("Hello, world.")
##アプリケーションのURLをDjango環境に設定
#アプリケーションのフォルダに、"urls.py"を作成
$ touch ./myapplication/urls.py ; cd ./myapplication ; tree
.
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
#### practice/myapplication/urls.py
#path関数を呼び出し
from django.urls import path
from . import views
#URLに、「myapplication/」の後に何も指定しなければ、views.pyに記載の、index関数が呼び出される
#このURLパターンには、indexという名前をつける
urlpatterns = [
path('', views.index, name='index'),
]
#### practice/config/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
#URLで、myapplication/へのアクセス依頼があれば、myapplication/のurls.pyを呼び出す
path('myapplication/', include('myapplication.urls')),
path('admin/', admin.site.urls),
]
これにより、URLで「http://****/apps/」アクセスがあれば、
practice/config/urls.py
-> practice/myapplication/urls.py
->
practice/myapplication/views.py
の順で、HTTPリクエストが届く仕組みができた。
##さいごに
#### practice/
$ python manage.py runserver
*****
*****
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
開発環境用サーバーを起動させ、ブラウザでhttp://127.0.0.1:8000/myapplication
を検索。
"Hello, world."と表記があればOKです。