Django 项目本身可以通过 django-admin
或者直接运行 python manage.py ARGS
来进行脚手架生成。但是生成的项目框架层次不算太好。
首先生成一个 Django 项目:
1
| django-admin startproject backend
|
生成的项目框架如下:
1 2 3 4 5 6 7
| backend ├── backend │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py
|
其中的两个 backend
分别表示项目,以及 app 全局配置
建立文件夹 apps
用来放置应用,把内层 backend
改为 conf
1 2 3 4 5 6 7 8
| backend ├── apps ├── conf │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py
|
注意这里需要配置以下几个文件:
1 2 3 4 5
| ...
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'conf.settings') ...
|
1 2 3 4 5 6 7 8
| ...
ROOT_URLCONF = 'conf.urls' ...
WSGI_APPLICATION = 'conf.wsgi.application' ...
|
现在可以测试 python manage.py runserver
是否可以起来。
接下来新建 Apps
1 2
| mkdir apps/login python manage.py startapp login apps/login
|
注册 app
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['apps'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',
'apps.login', ]
|
导入 URL
1 2 3 4 5 6 7
| ... from apps.login import urls as login_urls
urlpatterns = [ path('admin/', admin.site.urls), path('login/', include(login_urls)), ]
|
现在一个基本的项目结构就建立好了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| backend ├── apps │ └── login │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── conf │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── db.sqlite3 └── manage.py
|
相比起来层次更清晰,而且也更适合用作前后端分离的命名