📁 创建APP
**Django中的APP(应用程序)是将功能模块组织在一起的单位,每个APP通常负责处理特定的功能。**开发者可以将不同功能的模块放在不同的app中, 方便代码的复用。app就是项目的基石,因此开发博客的第一步就是创建新的app,用来实现跟图书相关的功能模块。
使用PyCharm
打开项目。在PyCharm
的终端输入python manage.py startapp book
指令,创建名为book
的app:
(venv) PS E:\djangopj\library> python manage.py startapp book
这将在项目目录下创建一个名为book
的APP。
在APP目录中,你可以编写模型(models)、视图(views)、模板(templates)等,来实现该功能模块的特定功能。
查看一下book
文件夹,应该看到这样的结构:
library # 项目根目录
├── book # APP目录
│ ├── migrations # 数据库迁移文件目录
│ ├── templates # 模板文件目录
│ ├── models.py # 模型文件
│ ├── views.py # 视图文件
│ ├── urls.py # URL配置文件
│ └── ...
└── ...
在上述项目结构中,
book
是我们创建的APP的目录,其中包含了处理图书管理功能所需的各个文件和目录。
💡 注册APP(settings)
接着我们需要修改项目配置文件,“告诉”Django现在有article这么一个app了。
要让Django项目知道你创建的APP,需要将其注册到项目的settings.py
文件中的INSTALLED_APPS
列表中。
打开项目根目录下的settings.py
文件,找到INSTALLED_APPS
列表,然后将你的APP添加到该列表中。例如,将book
APP添加到INSTALLED_APPS
列表中:
library/settings.py
INSTALLED_APPS = [
...
'book',
...
]
通过注册APP,Django将能够识别并加载该APP的功能模块。
🔗配置访问路径(urls)
在Django
中,你需要配置URL路径以匹配用户请求的路径,并将其映射到相应的视图函数。
打开library
目录下的urls.py
,增加以下代码:
# library/urls.py
from django.contrib import admin
# 记得引入include
from django.urls import path, include
# 存放映射关系的列表
urlpatterns = [
path('admin/', admin.site.urls),
# 新增代码,配置app的url
path('book/', include('book.urls', namespace='book')),
]
path 函数在
Django
中的的定义如下所示:
path(route, view, kwargs, name)
它可以接收 4 个参数,其中前两个是必填参数后两个为可选参数。参数解析如下:
route
:是一个匹配 URL 的准则(类似正则表达式)。当Django
响应一个请求时,它会从urlpatterns
的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项,然后执行该项映射的视图函数或者 include 函数分发的下级路由,因此,url
路由的编写在Django
中十分的重要!view
:指的是处理当前url
请求的视图函数。当Django
匹配到某个路由条目时,自动将封装的HttpRequest
对象作为第一个参数,被“捕获”的参数以关键字参数的形式,传递给该条目指定的视图函数。kwargs
:指使用字典关键字传参的形式给关联的目标视图函数传递参数。name
:给 URL 起个别名,常用于url
的反向解析,避免在模板中适应硬编码的方式使用嵌入url
,在后续章节会进行详细讲解。
- 参数
book/
分配了app
的访问路径; include
将路径分发给下一步处理;namespace
可以保证反查到唯一的url
,即使不同的app
使用了相同的url`。
记得在顶部引入include
。
在开发环境下,book的
url
为:http://127.0.0.1:8000/book/
还没结束。现在我们已经通过path
将根路径为book
的访问都分发给book这个app去处理。但是app通常有多个页面地址,因此还需要app
自己也有一个路由分发,也就是book.urls
了。
book 可以有多个页面,如列表页面、详情页面等,那么就需要如下两个url:
http://127.0.0.1:8000/book/list/
http://127.0.0.1:8000/book/detail/
app
中的urls.py
就是用来区分它们的。
在app
生成时并没有这个文件,因此需要自己在book
文件夹中创建urls.py
,在里面输入:
# book/urls.py
# 引入path
from django.urls import path
# 正在部署的应用的名称
app_name = 'book'
urlpatterns = [
# 目前还没有urls
]
urlpatterns
中暂时是空的,没写入任何路径的映射,不着急以后会写。
此时我们的app
就配置完成了。
注意此时
app
还没有写好,因此启动服务器可能会报错,是正常的。
Django
2.0之后,app
的urls.py
必须配置app_name
,否则会报错。
总结
本章创建了博客文章功能的app
,学习了注册app
并配置url
。
下一章开始编写模型Model,理解Django
的数据库处理。