目录
把数据表中得用户数据都给查询出来展示在页面上
查询数据
- 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')
- 先确定修改哪条记录------>怎么样确定修改哪条记录?
- 通过什么字段可以确定唯一一条记录? 主键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')
- 给删除按钮加一个链接,携带当前记录的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)