在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/

这次到这里为止。

广告
将在 10 秒后关闭
bannerAds