一、request对象的几个方法
在视图函数中写方法的时候,都会有一个形参request
def index ( request) :
pass
request. method
request. GET. get( )
request. GET. getlist( )
request. POST. get( )
request. POST. getlist( )
def index ( request) :
if request. method == 'POST' :
return
return render( request, 'index.html' )
二、django连接MySQL
NAME
HOST
PORT
USER
PASSWORD
CHARSET
解释器3.6
import pymysql
pymysql. install_as_mysqldb( )
解释器3.8
三、Django中的ORM
orm: 对象映射模型
表名:类名
记录:对象
字段:属性
class User ( models. Model) :
id = models. AutoField( priamry_key= True )
python manage. py makemigrations
python manage. py migrate
四、通过结合前端页面实现ORM对数据的增删改查
写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,
分别是修改、删除的按钮
'''思考修改功能的逻辑:'''
1 、 确定修改哪条记录,怎么确定? 通过主键id 确定唯一一条记录
2 、点击修改的按钮,应该跳转到一个修改的页面
3 、应该通过id 查询到原来的数据,并且把这个记录的数据展示到修改的页面
4 、开始修改,提交到后端的修改数据的方法中
'''删除功能的逻辑:'''
1 、确定删除哪条记录,怎么确定? 通过主键id 确定唯一一条记录
2 、点击删除的按钮,请求到后端的删除地址
3 、后端拿到id 直接做删除操作、跳转到列表页面
五、动静态网页
静态网页
在页面上写死的数据,一直不会改变的都是静态网页
动态网页
动态网页是从后端获取到的数据在页面展示
数据是从数据库中查询出来的也是动态网页
六、Django创建表关系
"""
一对一
一对多
多对多
"""
我们以图书表、出版社表、作者表、作者详情表为例创建
分析表关系:
图书表和出版社表是一对多的关系 >> > 外键如何创建:外键字段建在多的一方
图书表和作者表是多对多的关系 >> > 外键如何创建:外键字段建在第三张表中
"""
创建多对多的方式有3种方式,先将一种
"""
作者表和作者详情是一对一的关系 >> > 外键如何创建:外键字段建在查询频率较高的一方
class Book ( models. Model) :
title = models. CharField( max_length= 64 )
"""
max_digits=None, 总共多少位
decimal_places=None 小数占几位
"""
price = models. DecimalField( max_digits= 8 , decimal_places= 2 )
"""如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""
publish = models. ForeignKey( to= 'Publish' )
"""
authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
"""
authors = models. ManyToManyField( to= 'Author' , )
class Publish ( models. Model) :
title = models. CharField( max_length= 64 )
addr = models. CharField( max_length= 64 )
class Author ( models. Model) :
name = models. CharField( max_length= 64 )
author_detail = models. OneToOneField( to= 'AuthorDetail' )
注意:
1 . django1版本
on_delete
当删除关联表中的数据时,当前表与其关联的行的行为。
models. CASCADE
删除关联数据,与之关联也删除
models. DO_NOTHING
删除关联数据,引发错误IntegrityError
models. PROTECT
删除关联数据,引发错误ProtectedError
models. SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
models. SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
models. SET
删除关联数据,
a. 与之关联的值设置为指定值,设置:models. SET( 值)
b. 与之关联的值设置为可执行对象的返回值,设置:models. SET( 可执行对象)
2. django2
class Book ( models. Model) :
title = models. CharField( max_length= 64 )
"""
max_digits=None, 总共多少位
decimal_places=None 小数占几位
"""
price = models. DecimalField( max_digits= 8 , decimal_places= 2 )
"""如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""
publish = models. ForeignKey( to= 'Publish' , on_delete= models. CASCADE)
"""
authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
"""
authors = models. ManyToManyField( to= 'Author' , )
class Publish ( models. Model) :
title = models. CharField( max_length= 64 )
addr = models. CharField( max_length= 64 )
class Author ( models. Model) :
name = models. CharField( max_length= 64 )
author_detail = models. OneToOneField( to= 'AuthorDetail' , on_delete= models. CASCADE)
class AuthorDetail ( models. Model) :
phone = models. CharField( max_length= 64 )
qq = models. CharField( max_length= 64 )
七、Django框架的请求生命周期流程图