プロローグ
Djangoでサクッとローカルwebサイトを作ってみます。
記事の環境
Window 10
Django==3.1
Python 3.7.6
手順
pythonは導入されている前提です。
とりあえず、pip installでDjangoを導入します。
pip install django
Djangoが導入できたら、構築していきます。
プロジェクトを作成するフォルダでコマンド実行します。
HelloWorldはプロジェクト名です。
django-admin startproject HelloWorld
こんな感じの構成が出来上がりました。
└─HelloWorld
│ manage.py
│
└─HelloWorld
asgi.py
settings.py
urls.py
wsgi.py
__init__.py
続いてアプリを作成します。
Goodbyeがアプリ名です。
python manage.py startapp Goodbye
こんな感じの構成が出来上がりました。
│ manage.py
│
├─Goodbye
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └─migrations
│ __init__.py
│
└─HelloWorld
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└─__pycache__
settings.cpython-37.pyc
__init__.cpython-37.pyc
アプリをプロジェクトに認識させます。
プロジェクトを管理しているsettings.pyを更新します。
アプリ名を「INSTALLED_APPS」配下に追記しました。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Goodbye',
]
サイトアクセス用のURLを設定しておきます。
プロジェクトフォルダにあるurls.pyを更新しました。
pathの第一引数にurlを指定しています。
第二引数はアプリ側のurls.pyを参照できるようにincludeを使っています。
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('goodbye/', include('Goodbye.urls')),
]
アプリ側のurls.pyも更新しておきます。
pathの第一引数はプロジェクト側のurls.pyで指定済みなので、空にします。
第二引数はurlへアクセスされたときに呼び出されるviewを指定。
第三引数は任意の名前です。
from django.urls import path
from . import views
urlpatterns = [
path('', views.get_data, name='get_data'),
]
これでアクセスする準備はできました。
続いてアクセス画面に表示する内容を簡単に作ります。
renderを使ってリクエストを別出しするhtmlへ渡します。
from django.shortcuts import render
# Create your views here.
def get_data(request):
if "data" in request.GET:
param = {'test':request.GET.get("data")}
return render(request, 'Goodbye/index.html', param)
データを渡すhtmlを作成します。
アプリのフォルダにtemplatesフォルダと、その配下にアプリ名のフォルダを作成し、その配下にhtmlを作成しました。
{{変数}}でデータを受け取って表示させます。
<html>
<body>
<p>{{test}}</p>
</body>
</html>
あとはDjangoに標準搭載されている開発用サーバを起動してアクセスするだけです。
渡した変数をパラメータで指定しています。
エピローグ
記事を書くのに時間がかかりましたが、表示するだけなら10分程度で完了できました。
お手軽ですね。