part1:路由
为了使Django项目跟踪应用,需先激活应用。打开mysite下的settings.py,在其配置项INSTALLED_APPS中追加hello。
(1)编写视图
打开hello下的视图文件views.py,在其中编写视图函数,具体代码如下:
index()的功能为返回响应信息,“My name is qh.”
(2)配置路由
为了保证服务器能成功找到用户请求的页面,需为应用配置路由。在hello中创建子路由文件urls.py,具体内容如下:
根路由urls.py,具体内容如下:
在命令行启动开发服务器。进入mysite根路由下的虚拟环境,先ls看一下有没有manage.py文件,如果存在则运行python manage.py runserver。
Ctrl+单击,进入网址后,可以看到如下输出:
新建app_01应用,在集成终端中,确保已经进入python虚拟环境,输入如下命令,python manage.py startapp app_01,具体内容如下:
在mysite下的settings.py,在其配置项INSTALLED_APPS中追加app_01,具体内容如下:
(1)编写视图
打开app_01下的视图文件views.py,在其中编写视图函数,具体代码如下:
定义index_word和index_num函数,将输入值返回。
(2)配置路由
在app_01应用的urls.py文件中,输入如下代码:
根路由urls.py,具体内容如下:
在命令行启动开发服务器。进入mysite根路由下的虚拟环境,先ls看一下有没有manage.py文件,如果存在则运行python manage.py runserver。
Ctrl+单击,进入网址后,可以看到如下输出:
输入127.0.0.1:8000/word/邱华后,看到如下输出:
输入127.0.0.1:8000/num/123后,看到如下输出:
(1)编写视图。新建app_02应用(python manage.py startapp app_02),打开其文件夹下的视图函数,定义三个有返回值的函数,具体代码如下:
(2)配置路由。
在app_02应用中创建子路由文件urls.py,具体内容如下:
利用re_path正则表达式,限制bio和num的返回为3。
配置根路由urls.py,具体内容如下:
在命令行启动开发服务器。进入mysite根路由下的虚拟环境,先ls看一下有没有manage.py文件,如果存在则运行python manage.py runserver。
进入app_02页面,发现有以下路径:
分别进行验证,结果如下所示:
part2:模型
- 打开终端cmd,确保在输入mysql -uroot -p能进入mysql。
- 安装Navicat。
- 新建chapter03项目,django-admin startproject chapter03
- 安装books应用,python manage.py startapp books,并在settings.py文件中将包含模型的应用安装到INSTALLED_APPS中,将’books’添加到其中。
- 定义books应用书籍信息模型类,代码如下:
- 生成迁移文件是通过ORM框架生成执行数据库操作所需的SQL语句,生成迁移文件的命令具体如下:
python manage.py makemigrations
- 执行成功后,应用的migrations目录下会自动创建一个名为“0001_initial.py”的文件,该文件包含生成的数据表代码。
- 迁移文件生成后,使用执行迁移文件命令生成对应的数据表,具体如下:
python manage.py migrate
命令执行成功后,books应用下定义模型BookInfo,数据库中会生成数据表“books_bookinfo”,用Navicat进行验证。
- ForeignKey一对多关系,定义在人类模型中,示例如下:
一个国家包含多个人,国家和人之间具有一对多关系。
- OneToOneField用来定义一对一关系,国家和总统是一对一关系,一个国家只能有个总统,一个总统也只能属于一个国家。
- ManyToManyField用来定义多对多关系,教师和学生是多对多关系,多位教师可以对应多名学生,多位学生也可以对应多名教师。
字段的通用参数
- null
- default
- blank
- choices
- primary_key
- unique
- db_column
- db_index
模型的元属性
- abstract
- app_label
- ordering
- verbose_name
- verbose_name_plural
自定义管理器有两种方式:
(1)添加额外的自定义管理器方法
(2)修改Manager原始查询集
添加数据
- create()方法
- save()方法
查询数据
- all()方法
- filter()方法
- exclude()方法
- get()方法
删除数据
binfo.delete()
更新数据
update(self, **kwargs)