目录

一、数据的增删改查

1. 用户列表的展示

2. 修改数据的逻辑分析

3. 删除功能的分析

二、如何创建表关系

三、Django的请求生命周期流程图

一、数据的增删改查

1. 用户列表的展示

把数据表中得用户数据都给查询出来展示在页面上

查询数据

def userlist(request):

"""展示用户数据"""

# 1、 先查询数据表

"""这里不之处负数切片"""

# user_list=models.UserInfo.objects.all()[0:2] # 查询所有的数据

# user_list=models.UserInfo.objects.first() # 查询所有的数据

# select *from userinfo where username ='kevin';

# filter:类比where的使用

# 只要返回的结果是queryset对象,那么就可以一直点方法下去

# user_list=models.UserInfo.objects.filter(username='kevin').first() # 查询所有的数据

user_list=models.UserInfo.objects.all() # 查询所有的数据

# queryset对象就是一个列表套对象的形式

# , , ]>

# print(user_list[0])

# print(user_list[0].username)

# print(user_list[0].password)

# print(user_list[0].gender)

# print(user_list[1].gender)

'''支持for循环'''

# for i in user_list:

# print(i.gender)

return render(request, 'userlist.html', locals())

def edit(request):

"""先接收id值"""

edit_id = request.GET.get('id')

"""根据这个id值,再次去表中查询当前这条数据"""

# ]>

edit_obj=models.UserInfo.objects.filter(id=edit_id).first()

if request.method == 'POST':

hidden_id = request.POST.get('hidden_id')

username = request.POST.get('username')

password = request.POST.get('password')

gender = request.POST.get('gender')

2. 修改数据的逻辑分析

先确定修改哪条记录------>怎么样确定修改哪条记录?通过什么字段可以确定唯一一条记录? 主键id,要携带主键id到后端.在后端接收主键id值,然后根据这个id值再去表中查询数据,查询一条然后把查询的数据在渲染到页面中,然后在修改把修改之后的表单提交到后端,在做修改

数据的修改

# 第一种方式的修改

affect_rows=models.UserInfo.objects.filter(pk=hidden_id).update(username=username, password=password, gender=gender)

# print(affect_rows)

# 第二种方式的修改

edit_obj.username=username

edit_obj.password=password

edit_obj.gender=gender

edit_obj.save() # 保存数据的

# 跳转地址到列表展示也

return redirect('/userlist/')

return render(request, 'edit.html', locals())

数据的添加

def delete(request):

"""1、还是要接收前端传过来的主键id值"""

delete_id = request.GET.get('id')

# delete from userinfo where id = 1;

# models.UserInfo.objects.filter(pk=delete_id).delete()

# user_obj = models.UserInfo.objects.filter(pk=delete_id).first()

# user_obj.delete()

return redirect('/userlist/')

def add(request):

if request.method == 'POST':

username = request.POST.get('username')

password = request.POST.get('password')

gender = request.POST.get('gender')

"""操作数据量添加数据"""

# 返回的是当前记录的对象

# user_obj=models.UserInfo.objects.create(username=username, password=password, gender=gender)

# print(user_obj) # pyy

# print(user_obj.gender)

# print(user_obj.pk)

"""第二种方式添加"""

user_obj = models.UserInfo(username=username,password=password,gender=gender)

user_obj.save()

return redirect('/userlist/')

return render(request, 'add.html')

3. 删除功能的分析

给删除按钮加一个链接,携带当前记录的id值后端要接收这个主键id值后端直接执行删除操作

数据的删除

二、如何创建表关系

一对一 一对多 多对多没有关系

以图书管理系统为例

图书表出版社表作者表作者详情表

换位思考判断表关系

图书表和出版社表        >>>      一对多      >>>   图书表是多,出版社是一    >>> 建在多的一方图书表和作者表            >>>      多对多     >>>   需要第三张表作者表和作者详情表    >>>       一对一     >>>  外键字段一般建在查询频率较高的

在Django中如何创建表关系

class Book(models.Model):

title = models.CharField(max_length=64)

"""

max_digits=None,:总位数

decimal_places=None:小数位数

"""

# price decimal(8,2)

price = models.DecimalField(max_digits=8, decimal_places=2)

# publish_id = models.ForeignKey(to='Publish', to_field='id')

"""对于外键字段关系,会自动帮我们拼接_id"""

publish = models.ForeignKey(to='Publish')

"""authors它是一个虚拟字段,它不会实际在表中创建出来这个字段,

这一句可以自动帮助我们创建出来第三张表"""

authors = models.ManyToManyField(to='Author')

"""出版社表"""

class Publish(models.Model):

name = 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')

"""作者详情表"""

class AuthorDetail(models.Model):

phone = models.CharField(max_length=64)

email = models.CharField(max_length=64)

三、Django的请求生命周期流程图

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。