iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django学习笔记之View操作指南
  • 537
分享到

Django学习笔记之View操作指南

2024-04-02 19:04:59 537人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

Django的View 一个视图函数(类),简称视图,是一个简单的python 函数(类),它接受WEB请求并且返回Web响应。响应可以是一张网页的html内容,一个重定向,一个4

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操作内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Django学习笔记之View操作指南

本文链接: https://www.lsjlt.com/news/122061.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django学习笔记之View操作指南
    Django的View 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个4...
    99+
    2024-04-02
  • spring boot学习笔记之操作ActiveMQ指南
    目录前言ActiveMQ 介绍队列(Queue)广播(Topic)同时支持队列(Queue)和广播(Topic)总结前言 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异...
    99+
    2024-04-02
  • android学习笔记之View的滑动
    目录前言1.layout方法2.接下来,我们看看offsetLeftAndRight()与offsetTopAndBottom()方法3.第三个方法:LayoutParam...
    99+
    2023-01-03
    android页面滑动 android view android view的移动滑动
  • Python 学习笔记 - 操作MySQ
    Python里面操作MySQL可以通过两个方式:pymysql模块ORM框架的SQLAchemey本节先学习第一种方式。学习Python模块之前,首先看看MySQL的基本安装和使用,具体语法可以参考豆子之前的博客http://beanxyz...
    99+
    2023-01-31
    学习笔记 操作 Python
  • 【代码】Django学习笔记
      一些设置setting.py DEBUG = True ALLOWED_HOSTS = ['*'] DATABASES = { 'default': { 'ENGINE': 'django.db.backe...
    99+
    2023-01-31
    学习笔记 代码 Django
  • python学习笔记(一)-文件操作
    python的基本文件操作是包含在__buildin__模块中的。   I, 基本操作1, 打开fh=open('filename', 'r')   fh是打开文件的handle,每一个被打开的文件都应该退出时关闭(除了handle没有赋给...
    99+
    2023-01-31
    学习笔记 操作 文件
  • python学习笔记(十)、文件操作
    在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得?   1 打开文件   要打开文件,可以使用fileinput中的fileinput.input函数进行打开,也可以使用模块 io ...
    99+
    2023-01-31
    学习笔记 操作 文件
  • C++学习笔记之类成员指针
    C++的类成员指针是一种奇葩的指针。 假设现在我们要表示一个三维的点,现在有两种定义方式: struct point1{ int x, y, z; }; struct point...
    99+
    2024-04-02
  • javascript 学习笔记(一)DOM基本操作
    html部分代码: 当点击show按钮时,触发showValue函数,将input value的值动态添加到id="text"的元素节点中! 复制代码 代码如下: <p>...
    99+
    2022-11-21
    DOM 基本操作
  • Python学习笔记(2)比特操作、类、
    下面的笔记内容依然来自于codecademy 比特操作注意一: 适用范围 Note that you can only do bitwise operations on an integer. Trying to do them on s...
    99+
    2023-01-31
    学习笔记 操作 Python
  • Go语言学习笔记之文件读写操作详解
    目录文件写文件读小结文件操作比较多,分为几篇来写吧。首先是文件的读写,在平时的工程化操作中使用最多。 文件写 样例代码如下 package main import ( "...
    99+
    2024-04-02
  • [Python学习笔记] 数字类型及操作
    数字类型 整数类型 十进制:1110,-123 二进制:以0B或0b开头 0b110,-0B101 八进制:以0O或0o开头 0o123,-0O567 十六进制:以0X或0x开头 0x555,-0X89a 浮点数类型...
    99+
    2023-01-31
    学习笔记 类型 操作
  • Java学习笔记:npm异步编程实践指南?
    Java学习笔记:npm异步编程实践指南 在现代编程语言中,异步编程已经成为了一种必备的技能。在Java中,我们可以使用npm包管理器来进行异步编程。本篇文章将为您介绍npm异步编程的实践指南,并通过演示代码来帮助您更好地理解。 什么是np...
    99+
    2023-07-21
    学习笔记 npm 异步编程
  • Yii2 学习笔记之 GridView DetailView
    Yii2中的GridView和DetailView是两个非常实用的小部件,用于展示数据。GridView用于展示多条数据,而Deta...
    99+
    2023-09-28
    Yii2
  • Python学习笔记之线程
    目录1.自定义进程2.进程与线程3.多线程4.Thread类方法5.多线程与多进程小Case6.Thread 的生命周期7.自定义线程8.线程共享数据与GIL(全局解释器锁)9.GI...
    99+
    2024-04-02
  • pandas学习之txt与sql文件的基本操作指南
    目录前言1.导入txt文件2.导入sql文件2.1 安装依赖库pymysql3.小结总结前言 Pandas是python的一个数据分析包,是基于NumPy的一种工具提供了大量数据结构...
    99+
    2024-04-02
  • Python3学习笔记之is == in
    意义 ==比较的是两个对象的值是否相等,比较常用 a = [1, 2, 3] b = [1, 2, 3] print(a == b) #True is比较的是两个对象是不是同一个实例对象,它们的内存地址是否相同...
    99+
    2023-01-31
    学习笔记
  • Java学习笔记之Maven篇
    目录一、maven能做什么?1.1 两大应用1.2 maven 的核心二、maven结构:2.1 maven工程标准目录结构2.2 配置系统变量2.3 常用命令三、应用:idea集成...
    99+
    2024-04-02
  • PHP学习笔记:数组的使用与操作
    导言:数组是一种常用的数据结构,在PHP中也是一个重要的数据类型。掌握数组的使用与操作,可以帮助我们更好地组织和处理数据。本篇文章将介绍数组的基本概念、创建与初始化数组、访问数组元素、添加与删除数组元素、数组的遍历与排序等操作,并附上具体的...
    99+
    2023-10-21
    学习 PHP 数组
  • HTML语法学习笔记:记录您的学习之旅
    HTML 简介 超文本标记语言 (HTML) 是互联网上网页的基础。它是一种标记语言,用于定义网页的结构和内容。学习 HTML 语法对于成为一名成功的网络开发者至关重要。 HTML 元素 HTML 中的基础构建块是元素。它们由一对尖括号...
    99+
    2024-03-09
    HTML、语法、学习、教程、网络开发
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作