在Python和Django上创建一个项目
整理Django项目的创建和添加应用程序。
※ 2020年4月29日更新
创建一个项目
我們將創建一個名為「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
第一步
在创建项目时,以下目录/文件将被创建。
mysite
│  manage.py
└─mysite
        asgi.py
        settings.py
        urls.py
        wsgi.py
我将编辑「settings.py」文件。
(1) 配置以使用Django模板
将「TEMPLATES」进行如下更改。
・・・
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
#        'DIRS': [],
        'DIRS': [
          os.path.join(BASE_DIR, 'templates'),
        ],
(2)配置以使用静态文件的设置
在中文中,只需要给出一个选项:
添加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
更改LANGUAGE_CODE和TIME_ZONE。
・・・
LANGUAGE_CODE = 'ja-JP'
TIME_ZONE = 'Asia/Tokyo'
将应用程序添加到项目中。
(1) 在项目中添加应用。
执行以下命令,添加一个名为(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
将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')
添加myapp的路径到mysite/urls.py文件中。
from django.contrib import admin
from django.urls import path, include # includeを追加
urlpatterns = [
    path('myapp/', include('myapp.urls')),
    path('admin/', admin.site.urls),
]
在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”就可以。
$ python manage.py runserver
$ curl http://127.0.0.1:8000/myapp/
Hello World
使用Django模板
使用Django模板创建一个显示HTML的应用程序
(1) 在项目中添加应用程序
django-admin startapp myapp2
将urls.py添加到应用程序中,并进行如下编辑。
from django.urls import path
from . import views
app_name = 'myapp2'
urlpatterns = [
    path('', views.index, name='index'),
]
(3) 将 views.py 编辑为以下方式
在使用Django模板时,我们使用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/
这次到这里为止。