orm的基本操作

# 查一个
res = models.User.objects.filter(username=username)
"""
返回值你先看成是列表套数据对象的格式
它也支持索引取值 切片操作 但是不支持负数索引
它也不推荐你使用索引的方式取值
用first()取值
取到的是一个对象,
查一个,还是查多个,都是queryset对象 以列表套对象的方式存放,查询的是唯一字段,列表中就只有一个对象,所用直接用first取值 user_obj = models.User.objects.filter(username=username).first() """ filter括号内可以携带多个参数 参数与参数之间默认是and关系 你可以把filter联想成where记忆 # 增 from app01 import models res = models.User.objects.create(username=username,password=password) # 返回值就是当前被创建的对象本身 # 第二种增加 user_obj = models.User(username=username,password=password) user_obj.save() # 保存数据

  

# 先讲数据库中的数据全部展示到前端 然后给每一个数据两个按钮 一个编辑一个删除

# 查全部
def userlist(request):
    # 查询出用户表里面所有的数据
    # 方式1
    # data = models.User.objects.filter()
    # print(data)
    # 方式2
    user_queryset = models.User.objects.all()
    # return render(request,'userlist.html',{'user_queryset':user_queryset})
    return render(request,'userlist.html',locals())

# 编辑功能/改
	# 点击编辑按钮朝后端发送编辑数据的请求
  """
  如何告诉后端用户想要编辑哪条数据?
  	将编辑按钮所在的那一行数据的主键值发送给后端
  	利用url问号后面携带参数的方式
  	
  	{% for user_obj in user_queryset %}
                        <tr>
                            <td>{{ user_obj.id }}</td>
                            <td>{{ user_obj.username }}</td>
                            <td>{{ user_obj.password }}</td>
                            <td>
                                <a href="/edit_user/?user_id={{ user_obj.id }}" class="btn btn-primary btn-xs">编辑</a>
                                <a href="" class="btn btn-danger btn-xs">删除</a>
                            </td>
                        </tr>
                    {% endfor %}
  """
  # 后端查询出用户想要编辑的数据对象 展示到前端页面供用户查看和编辑
  def edit_user(request):
    # 获取url问号后面的参数
    edit_id = request.GET.get('user_id')
    # 查询当前用户想要编辑的数据对象
    edit_obj = models.User.objects.filter(id=edit_id).first()

    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 去数据库中修改对应的数据内容
        # 修改数据方式1
        # models.User.objects.filter(id=edit_id).update(username=username,password=password)
        """
            将filter查询出来的列表中所有的对象全部更新            批量更新操作
            只修改被修改的字段
        """

        # 修改数据方式2
        edit_obj.username = username
        edit_obj.password= password
        edit_obj.save()
        """
            上述方法当字段特别多的时候效率会非常的低
            从头到尾将数据的所有字段全部更新一边 无论该字段是否被修改
        """
        
        # 跳转到数据的展示页面
        return redirect('/userlist/')



    # 将数据对象展示到页面上
    return render(request,'edit_user.html',locals())

# 删除功能
	"""
	跟编辑功能逻辑类似
	def delete_user(request):
    # 获取用户想要删除的数据id值
    delete_id = request.GET.get('user_id')
    # 直接去数据库中找到对应的数据删除即可
    models.User.objects.filter(id=delete_id).delete()
    """
        批量删除
    """
    # 跳转到展示页面

    return redirect('/userlist/')	
	
	"""

  

posted @ 2022-04-03 23:15  咖喱给给啊  阅读(87)  评论(0)    收藏  举报