#プロローグ
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に標準搭載されている開発用サーバを起動してアクセスするだけです。 渡した変数をパラメータで指定しています。 ![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/b5191946-0a13-6c05-cf6d-a54175fa9ecd.png)
#エピローグ
記事を書くのに時間がかかりましたが、表示するだけなら10分程度で完了できました。
お手軽ですね。