Djangoのプロジェクト作成とアプリケーションの追加を整理します。
※ 2020.04.29 リニューアル
projectを作成する
「mysite」というプロジェクトを作成するものとします。
$ django-admin startproject mysite
$ cd mysite
動かしてみる。
$ python manage.py runserver
http://127.0.0.1:8000にアクセスするとロケットが飛び立ちます。
Django3ではasgiで動かすこともできます
$ pip install gunicorn uvicorn
$ gunicorn -k uvicorn.workers.UvicornWorker mysite.asgi:application
first step
プロジェクト作成すると、以下のディレクトリ/ファイルが作成されています。
mysite
│ manage.py
└─mysite
asgi.py
settings.py
urls.py
wsgi.py
「settings.py」を編集していきます。
(1) Django Templateを利用するための設定
「TEMPLATES」を以下のように変更します。
・・・
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 'DIRS': [],
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
(2) STATIC FILEを使用するための設定
STATICFILES_DIRS を追加します。「STATIC_URL」の下などがといいでしょう。
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
(3) データベースをpostgresqlに変更する場合
「DATABASES」を以下のように編集します
・・・
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'djangodb',
'USER': 'testuser',
'PASSWORD': 'secret',
'HOST': 'localhost',
'PORT': '5432',
}
}
(4) ディレクトリを作成する。
プロジェクトの直下にtemplates, staticを作成します。
mysite
│ manage.py
├─mysite
│ │ asgi.py
│ │ settings.py
│ │ urls.py
│ │ wsgi.py
├─static
└─templates
(5) LANGUAGE_CODEとTIME_ZONEを変更
・・・
LANGUAGE_CODE = 'ja-JP'
TIME_ZONE = 'Asia/Tokyo'
projectにアプリを追加する
(1) projectにアプリを追加する
以下のコマンドを実行してアプリケーション(myappとします)を追加します
$ django-admin startapp myapp
以下のようなディレクトリ/ファイルになっています
mysite
│ db.sqlite3
│ manage.py
│
├─myapp
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └─migrations
│ __init__.py
│
├─mysite
│ │ asgi.py
│ │ settings.py
│ │ urls.py
│ │ wsgi.py
│ └ __init__.py
│
├─static
└─templates
(2) urls.pyをアプリに追加して以下のように編集します
from django.urls import path
from . import views
app_name = 'myapp'
urlpatterns = [
path('', views.index, name='index'),
]
├─myapp
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ urls.py
│ │ views.py
(3) views.pyを以下のように編集します
from django.http import HttpResponse
def index(req):
return HttpResponse('Hello World')
(4) mysite/urls.pyにmyappのpathを追加する
from django.contrib import admin
from django.urls import path, include # includeを追加
urlpatterns = [
path('myapp/', include('myapp.urls')),
path('admin/', admin.site.urls),
]
(5) mysite/settings.pyにmyappを追加する
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 追加
]
確認してみましょう。「Hello World」が出力されればOKです。
$ python manage.py runserver
$ curl http://127.0.0.1:8000/myapp/
Hello World
Django Templateを使う
Django Templateを使ってHTMLを表示するアプリを作成する
(1) projectにアプリを追加する
django-admin startapp myapp2
(2) urls.pyをアプリに追加して以下のように編集します
from django.urls import path
from . import views
app_name = 'myapp2'
urlpatterns = [
path('', views.index, name='index'),
]
(3) views.pyを以下のように編集します
Django templateを使う場合は、renderを使います
from django.shortcuts import render
def index(request):
return render(request, 'myapp2/index.html')
(4), (5)は前述と同様なので省略します。
(6) htmlを追加します。
cssファイルなどを使う場合は、{% load static %}と記述して、linkタグに{% static 'css/styles.css' %}などと記述します。
{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<link rel="icon" href="#">
<link href="{% static 'css/styles.css' %}" rel="stylesheet">
<title></title>
</head>
<body>
hello djnago template
</body>
</html>
以下のようなディレクトリ/ファイルになっています
├─static
│ ├─css
│ │ styles.css
│ └─js
└─templates
└─myapp2
index.html
確認してみましょう。うまくHTMLが表示されたでしょうか。
$ python manage.py runserver
$ curl http://127.0.0.1:8000/myapp2/
今回はここまで。