Django学习笔记之View操作指南

 更新时间:2021年03月20日 12:24:14   作者:三省吾身  
这篇文章主要给大家介绍了关于Django学习笔记之View操作指南的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Django的View

一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 

无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。

导入:from django.views import View

一、查询所有数据

查询数据在自定义的视图类中定义get方法

使用django.http模块中的JsonResponse对非json格式的数据做返回处理

在JsonResponse必须添加safe=False参数,否则会报错:In order to allow non-dict objects to be serialized set the safe

from django.http import HttpResponse 
from django import http 
# Create your views here. 
class UserView(View): 
 ''' 用户视图 ''' 
 def get(self, request): 
  # 模型类实例化对象 
  users = UserProfile.objects.all() 
  user_list = [] 
  for user in users: 
   user_dict = { 
    'id': user.id, 
    'username': user.username, 
    'password': user.password, 
    'open_id': user.open_id, 
    'code': user.code 
   } 
  user_list.append(user_dict)
  return http.JsonResponse(user_list) 

二、创建数据

使用django中的json,把前端传递过来的json数据转成字典

使用django.db.models模块中的Q来查询多个字段在数据库中是否存在

from django.views import View 
from django.http import HttpResponse 
from django import http 
from django.db.models import Q 
import json 
class UserView(View): 
 ''' 用户视图 ''' 
 def post(self, request): 
  # 获取数据, json转字典 
  dict_data = json.loads(request.body.decode()) 
  print(dict_data) 
  nick_name = dict_data.get('nickName') 
  code = dict_data.get('code') 
  open_id = "xljsafwjeilnvaiwogjirgnlg" 
  # 校验数据 
  result = UserProfile.objects.filter(Q(code=code) | Q(open_id=open_id)) 
  if not result.exists(): 
   # 数据入库 
   user = UserProfile.objects.create( username=nick_name, open_id=open_id, code=code ) 
   # 返回响应 
   user_dict = { 
    'id': user.id, 
    'username': user.username, 
    'password': user.password, 
    'open_id': user.open_id, 
    'code': user.code 
   } 
   return http.JsonResponse(user_dict) 
  return http.JsonResponse("用户已存在", safe=False, status=202)

三、查询某一条数据(单个)

前端需要传递pk/id值,通过pk/id查询数据,查询一条数据必须用get,不能用filter,否则会报错:AttributeError: 'QuerySet' object has no attribute 'id'

数据转换

返回响应

class UserProfileDetail(View): 
 ''' 详情视图 ''' 
 def get(self, request): 
  userInfo = UserProfile.objects.get(id=id) 
  if not userInfo: 
   return HttpResponse("查询的用Info户不存在", status=404)     
  user_dict = { 
   'id': userInfo.id, 
   'username': userInfo.username, 
   'password': userInfo.password, 
   'open_id': userInfo.open_id, 
   'code': userInfo.code 
  } 
  return http.JsonResponse(user_dict, status=200) 

四、更新一条数据

前端需要传递pk/id值,通过pk/id查询数据,查询一条数据必须用get,不能用filter,否则会报错:AttributeError: 'QuerySet' object has no attribute 'id'

更新一条数据时必须使用filter来查询数据集,再使用update(**data)来更新数据,不能使用get,否则会报错:AttributeError: '模型类' object has no attribute 'update'

get查询获取到的是数据对象,而filter查询获取到的是数据集

class UserProfileDetail(View): 
 ''' 详情视图 ''' 
 def put(self, request, id): 
  data_dict = json.loads(request.body.decode()) 
  userInfo = UserProfile.objects.get(id=id) 
  if not userInfo: 
   return HttpResponse("查询的用Info户不存在", status=404)     
  UserProfile.objects.filter(id=id).update(**data_dict) 
  userInfo = UserProfile.objects.get(id=id) 
  user_dict = { 
   'id': userInfo.id, 
   'username': userInfo.username, 
   'password': userInfo.password, 
   'open_id': userInfo.open_id, 
   'code': userInfo.code 
  } 
  return http.JsonResponse(user_dict, status=200)

五、删除某一条数据

class UserProfileDetail(View): 
 ''' 详情视图 ''' 
 def delete(self, request, id): 
  userInfo = UserProfile.objects.filter(id=id) 
  if not userInfo: 
   return HttpResponse("删除的数据不存在", status=404)      
  UserProfile.objects.filter(id=id).delete() 
  return HttpResponse("数据删除成功", status=204)

上述的操作只能适用于数据表中字段很少的情况,如果字段较多,写起来会很麻烦,不利于开发

总结

到此这篇关于Django学习笔记之View操作指南的文章就介绍到这了,更多相关Django View操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你用Python读取CSV文件的5种方式

    教你用Python读取CSV文件的5种方式

    一个股票的数据集,其实就是常见的表格数据,有自己的头部和身体,这篇文章主要介绍了用Python读取CSV文件的5种方式,通过五招给大家介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • python创建学生管理系统

    python创建学生管理系统

    这篇文章主要为大家详细介绍了python创建学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Python爬取个人微信朋友信息操作示例

    Python爬取个人微信朋友信息操作示例

    这篇文章主要介绍了Python爬取个人微信朋友信息操作,涉及Python使用itchat包实现微信朋友信息爬取操作相关实现技巧,需要的朋友可以参考下
    2018-08-08
  • 基于torch.where和布尔索引的速度比较

    基于torch.where和布尔索引的速度比较

    今天小编就为大家分享一篇基于torch.where和布尔索引的速度比较,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python元组操作实例解析

    python元组操作实例解析

    这篇文章主要介绍了python元组操作,以实例的形式较为直观的讲述了Python中元组的特点与用法,需要的朋友可以参考下
    2014-09-09
  • python爬虫入门教程--利用requests构建知乎API(三)

    python爬虫入门教程--利用requests构建知乎API(三)

    这篇文章主要给大家介绍了关于python爬虫入门之利用requests构建知乎API的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Python continue语句实例用法

    Python continue语句实例用法

    在本篇文章里小编给大家整理了关于Python continue语句实例用法,有需要的朋友们可以跟着学习下。
    2020-02-02
  • 用Python写漏洞验证脚本的代码

    用Python写漏洞验证脚本的代码

    这篇文章主要介绍了用Python写漏洞验证脚本,本文给大家分享完整实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 浅析python连接数据库的重要事项

    浅析python连接数据库的重要事项

    这篇文章主要介绍了python连接数据库的重要事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 每天迁移MySQL历史数据到历史库Python脚本

    每天迁移MySQL历史数据到历史库Python脚本

    这篇文章主要为大家详细介绍了Python实现每天迁移MySQL历史数据到历史库的脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04

最新评论