検証環境
- Python 3.10.8
- Django 4.1.4
はじめに
Djangoは、Python用のフルスタックWebフレームワークであり、データベース操作やユーザ認証、セッション管理などのWebアプリケーション開発に必要な機能を簡単に実装できるように提供している。
Djangoは非常に多くの機能を持っており複雑なので、規模が小さいWebアプリケーションの開発には、Flaskを使用するのも良いだろう。
今回は、Djangoを使用して、簡単なWebサーバを構築する。
Djangoのインストール
pipにてDjangoをインストールする。
% pip3 install django
バージョンを確認
% python3 -m django --version
4.1.4
プロジェクトの作成
Djangoのプロジェクトを作成するには、以下のコマンドを実行する。
% django-admin startproject <プロジェクト名>
mysiteの部分は、プロジェクトの名前であり、その名前のディレクトリが作成される。
名前は基本何でもよいが、django や test という名前は、Pythonパッケージ名と衝突するので、避けるべきである。
また、うまく動作しない場合は、django-admin 実行時の問題 を参照したい。
django-admin startproject コマンドを実行すると、以下のようなファイルが自動で作成される。
% django-admin startproject mysite
% cd mysite
% ls -R
manage.py* mysite/
./mysite:
__init__.py asgi.py settings.py urls.py wsgi.py
各ファイルは次のようになっている。
ファイル名 | 説明 |
---|---|
mysite/ | プロジェクトが入っているディレクトリ。この名前は動作に影響しないので、好きに変更できる |
mysite/manage.py | Djangoに対するさまざまな操作を行うユーティリティプログラム |
mysite/mysite/ | プロジェクトの本当のPythonパッケージ |
mysite/mysite/__init__.py | このディレクトリがPythonパッケージであることを知らせる空ファイル。 これがあることによって、このディレクトリにあるPythonプログラムをimportで呼び出せる |
mysite/mysite/settings.py | Djangoプロジェクトの設定ファイル |
mysite/mysite/urls.py | サイトのURL構成を記述するファイル |
mysite/mysite/wsgi.py | WSGI互換Webサーバーとのエントリーポイント |
アプリケーションの作成
アプリケーションを作成するには、以下のコマンドを実行する。
% python3 manage.py startapp <アプリケーション名>
実際に、mysiteディレクトリに入り、myapp というアプリケーションを作成する。
% python3 manage.py startapp myapp
% ls -R
manage.py* myapp/ mysite/
./myapp:
__init__.py admin.py apps.py migrations/ models.py tests.py views.py
./myapp/migrations:
__init__.py
./mysite:
__init__.py __pycache__/ asgi.py settings.py urls.py wsgi.py
myappの中身は以下のようになっている。
ファイル名 | 説明 |
---|---|
__init__.py | このディレクトリがPythonパッケージであることを知らせる空ファイル。 |
admin.py | データベースをweb画面上で管理できるようにするファイル |
apps.py | アプリケーションの管理に使用される |
migrations | データベースのモデルの作成や変更に使用される |
models.py | データベースのモデルを記述する |
tests.py | テストコードを記述するファイル |
views.py | ビューの管理をする |
ビューの作成
ここでは、実際にweb画面に表示するものを作成する。
以下は、Web画面上に "Hello" と表示するだけの簡単なビューを作成するコードである。
# myapp/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello")
URLの設定
ビューを作成したが、これを表示させるには、URLを設定しなければならない。
urlの設定方法は、2つある。
ひとつは以下のように mysite/urls.py に、myapp.view をインポートする方法である。
# mysite/urls.py
from django.contrib import admin
from django.urls import path
import myapp.views
urlpatterns = [
path(r'^admin/', admin.site.urls),
path(r'', myapp.views.index, name='index')
]
もうひとつは、myapp/urls.py ファイルを作成し、それを mysite/urls.py でインクルードする方法である。
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path(r'', views.index, name='index'),
]
# mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path(r'', include('myapp.urls')),
]
言語設定(オプション)
mysite/settings.py から言語やタイムゾーンを変更することができる。
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
上記を以下に変更する。
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
Djangoを動かす
実際に動かすには、プロジェクトディレクトリ内で以下のコマンドを入力する。
% ls
manage.py* myapp/ mysite/
% python3 manage.py runserver
サーバが立ち上がるので、localhost:8000 にアクセスしてみと、きちんとページが表示できていることが確認できる。
また、デフォルトでは、デバッグモードが有効になっており、エラーが出た時に詳細情報を出力する。
例えば、存在しないURLにアクセスした場合は、以下の画面になる。
これを表示したくない場合は、mysite/settings.py にある以下の記述を次のように書き換えればよい。
#DEBUG = True
#ALLOWED_HOSTS = []
DEBUG = False
ALLOWED_HOSTS = ['*']
デバッグモードを無効にして存在しないURLにアクセスした場合は以下のようになる。
0件のコメント