Djangoフレームワークを利用して、画面(ページ)を作成し表示させてみます。
Django自体はすでにインストール済みであることを前提に進めます。
バージョンの確認をします。
1 2 |
$ python -m django --version 2.2.6 |
プロジェクトの作成
「hello_project」という名前でプロジェクトを作成します。
1 |
$ django-admin startproject hello_project |
生成されたhello_projectディレクトリ内に移動したら、サーバーを起動させます。
1 2 |
$ cd hello_project/ $ python manage.py runserver |
http://127.0.0.1:8000/ にて下記の画面が確認できます。
アプリケーションの作成
「myapp」という名前のアプリケーションを作成します。myappディレクトリが生成されます。
1 |
$ python manage.py startapp myapp |
以上で下記のような構成になっていることが確認できます。これからhello_projectとmyapp内のファイルを編集、または追加していきます。
1 2 3 4 5 |
├── hello_project ├── db.sqlite3 ├── hello_project ├── manage.py └── myapp |
hello_projectディレクトリ内にあるsettings.pyのINSTALLED_APPS項目にアプリケーション名を追記します。
hello_project/settings.py
1 2 3 4 5 6 7 8 9 |
INSTALLED_APPS = [ 'myapp', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] |
今回は以下2つのURLで確認できるページ(View)を作成してみます。
1 2 |
http://127.0.0.1:8000/myapp/ http://127.0.0.1:8000/myapp/hello/ |
まず hello_projectディレクトリ内のurls.pyを下記のように編集します。
hello_project/urls.py
1 2 3 4 5 6 7 |
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('myapp/', include('myapp.urls')), ] |
2行目
新たにincludeモジュールをimportしています。
6行目
myapp/ 以下で示されるURLと、これから作成するmyappディレクトリ内のurls.pyを紐付けています。つまりmyapp/ 以下が、myappアプリケーションとして機能するよう設定しています。
次にアプリケーションとして作成したmyappディレクトリ内のviews.pyを編集します。まぎらわしいですが、このファイルにはRailsやLaravelでいうコントローラを記述していきます。
myapp/views.py
1 2 3 4 5 6 7 8 9 10 |
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse("<H1>index</H1>") def hello(request): return HttpResponse("<H1>hello</H1>") |
2行目以下を追加しています。デフォルトですでに記述してある1行目のrenderの機能は本記事では利用していません。index関数、hello関数を記述しリクエストがあった場合のレスポンスを用意しています。これらの関数はDjangoにおいて一般的にビュー関数と呼ばれています。
最後にmyappディレクトリ内にurls.pyを作成し、下記のように編集します。
myapp/urls.py
1 2 3 4 5 6 7 |
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('hello/', views.hello, name='hello'), ] |
6行目
myapp/hello のURLにアクセスすると、同ディレクトリ上にあるviews.py内のhello関数が呼び出されるように記述しています。
以上で下記URLそれぞれの画面が確認できます。
1 2 |
http://127.0.0.1:8000/myapp/ http://127.0.0.1:8000/myapp/hello/ |
以上でビュー関数を記述、つまり関数ベースによって画面を作成することができました。Djangoには画面を作成していく上で、クラスベースによる方法もあります。下記関連ページをご覧下さい(ただし本当に「入門」で検索して来た方は、本ブログのPythonカテゴリー>Django項目を上から順番に読むことをおすすめします)。
関連ページ
参照ページ
django ドキュメント