DRF (Django REST framework) 中的视图扩展类

1)ListModelMixin列表视图扩展类,提供list(request,*args,**kwargs)方法快速实现列表视图,返回200状态码。该Mixin的list方法会对数据进行过滤和分页。源代码:classListModelMixin(object):"""Listaqueryset."""deflist(self,request,*args,**kwargs):#过滤queryset=self.filter_queryset(self.get_queryset())#分页page=self.paginate_queryset(queryset)ifpageisnotNone:serializer=self.get_serializer(page,many=True)returnself.get_paginated_response(serializer.data)#序列化serializer=self.get_serializer(queryset,many=True)returnResponse(serializer.data)举例:fromrest_framework....

DRF (Django REST framework) 中的视图类

1)APIViewrest_framework.views.APIViewAPIView是RESTframework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的RESTframework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返回RESTframework的Response对象,视图会为响应数据设置(render)符合前端要求的格式;任何APIException异常都会被捕获到,并且处理成合适的响应信息;在进行dispatch()分发前,会对请求进行身份认证、权限检查、流量控制。支持定义的属性:authentication_classes 列表或元祖,身份认证类permissoin_classes 列表或元祖,权限检查类throttle_classes 列表或元祖,流量控制类在APIView中仍以常规的类视图定义方法来实现get()、post()或者其他请求方式的方法。举例:fromrest_framework.viewsimportAPIV...

DRF (Django REST framework) 中的Request 与 Response

  - RESTframework传入视图的request对象不再是Django默认的HttpRequest对象,而是RESTframework提供的扩展了HttpRequest类的Request类的对象。  - RESTframework提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典对象保存到Request对象中。  - Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。  - 无论前端发送的哪种格式的数据,我们都可以以统一的方式读取数据。 常用属性1).datarequest.data 返回解析之后的请求体数据。类似于Django中标准的request.POST和 request.FILES属性,但提供如下特性:包含了解析之后的文件和非文件数据包含了对POST、PUT、PATCH请求方式解析后的数据利用了RESTframework的parsers解析器,不仅支持表单类型数据,也支持J...

Django Mysql数据库-F查询和Q查询

一、F查询和Q查询F查询:在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。如果我们要对两个字段的值做比较,那该怎么做呢?Django提供F()来做这样的比较。F()的实例可以在查询中引用字段,来比较同一个model实例中两个不同字段的值。1、查看评论数大于阅读数的书fromdjango.db.modelsimportF,Qprint(models.Book.objects.filter(commentNum__gt=F("readNum")))2、修改操作也可以使用F函数,比如将id大于1的所有的书的价格涨价100元print(models.Book.objects.filter(nid__gt=1).update(price=F("price")+100))3、Django支持F()对象之间以及F()对象和常数之间的加减乘除和取模的操作。#查询评论数大于收藏数2倍的书籍models.Book.objects.filter(commnetNum__lt=F('keepNum')*2) Q查询:filter() 等方法中的关键字参数查询都是一起进行...

Django Mysql数据库-聚合查询与分组查询

一、聚合查询与分组查询(很重要!!!)聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合fromdjango.db.modelsimportAvg,Sum,Count,Max,Min#1、查询所有图书的平均价格print(models.Book.objects.all().aggregate(Avg("price")))aggregate()是QuerySet 的一个终止子句(也就是返回的不再是一个QuerySet集合的时候),意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。fromdjango.db.modelsimportAvg,Sum,Count,Max,Min#1、查询所有图书的平均价格print(models.Book.objects.all().aggregate(avgprice=Avg("price")))如果你希望生成不止一个聚合,你可以向aggregate()子句中添加另...

Django Mysql数据库-基于双下划线的跨表查询

一、基于双下划线的跨表查询Django还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认SQLJOIN联系。要做跨关系查询,就使用两个下划线来链接模型(model)间关联字段的名称,直到最终链接到你想要的model为止。(相当于用sql语句用join连接的方式,可以在settings里面设置,可查看sql语句)数据库模型:classBook(models.Model):nid=models.AutoField(primary_key=True)#自增id(可以不写,默认会有自增id)title=models.CharField(max_length=32)publishDdata=models.DateField()#出版日期price=models.DecimalField(max_digits=5,decimal_places=2)#一共5位,保留两位小数#一个出版社有多本书,关联字段要写在多的一方#不用命名为publish_id,因为django为我们自动就加上了_idpublish=models.ForeignKey("Publish")#fore...

PostgreSQL创建扩展出错

问题:loraserver_as=#createextensionpg_trgm;ERROR:couldnotopenextensioncontrolfile"/usr/pgsql-10/share/extension/pg_trgm.control":Nosuchfileordirectory 未解决:yuminstallpostgresql-contribsystemctlrestartpostgresql-10 Becausepostgis.contolislocatedinanotherplace,find/usr-namepostgis.control/usr/share/pgsql/extension/postgis.controlButpostgrestryingtocreateitfrom /usr/pgsql-9.6/share/extension/postgis.controlThisquestionalreadywasaskedbefore,butmyproblemisother....

PostgreSQL入门教程(命令行)

初次安装完成后1.默认生成一个名为postgres的数据库2.一个名为postgres的数据库用户3.这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户。 下面,我们使用postgres用户,来生成其他用户和新数据库。好几种方法可以达到这个目的,这里介绍两种。第一种方法:使用PostgreSQL控制台首先,新建一个Linux新用户,可以取你想要的名字,这里为dbuser。sudoadduserdbuser然后,切换到postgres用户。sudosu-postgres下一步,使用psql命令登录PostgreSQL控制台psql这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为”postgres=#”,表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。第一件事是使用password命令,为postgres用户设置一个密码。passwordpostgres第二件事是创建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码。CREATEUSERdbuserWIT...

在CentOS 7 / RHEL 7安装PostgreSQL 10

CentOS到了7.x版本,PostgreSQL也来到了10.x版本.前些天MySQL都直接跨到了8.0版本. 本文是一篇在CentOS7.4上安装安装PostgreSQL10.3的教程.本文发布于2018-04-28.1.切换到root用户:sudosu2.把最新的rpm包添加到系统库:PostgreSQL会为所有的Linux平台发布rpm包,而且会比其他的的库更新的更快.可以试试在浏览器输入https://download.postgresql.org/pub看会发现什么.###CentOS7####rpm-Uvhhttps://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm###RHEL7####rpm-Uvhhttps://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm3.用yum安装PostgreS...

c#中文件的上传与管理(查找文件)

1,检查文件是否存在在使用文件时不只是要知道文件路径,更重要的是知道这个文件是否存在,如果不存在,程序调用文件时会发生错误。步骤:(一):创建一个Windows窗体应用程序(二):在该窗体中添加一个TextBox控件,用来显示选择的文件,一个Button控件,用来判断文件是否存在。(三):代码如下1privatevoidbutton1_Click(objectsender,EventArgse)2{3if(File.Exists(textBox1.Text))//判断文件是否存在4{5MessageBox.Show("该文件已经存在");6}7else8{9MessageBox.Show("该文件不存在");10}11}(四):运行结果 本实例中主要用到了File类的Exists方法。File类的Exists方法用来确定指定的文件是否存在。其语法格式如下:publicstaticboolExists(stringpatb);参数说明:1,path:要检查的文件。2,返回值:如果调用方法具有要求的权限并且path包含现有的文件的名称,则为true;否则为false。如果path...
代码星球 代码星球·2021-02-13

c#中文件上传管理(文件的创建与删除)

1,生成随机文件名或文件夹名在实际开发过程中,如果要创建的文件名或文件夹名不确定,可以随机生成一个文件夹或者文件名,则本例可以使用你c#实现以上功能:步骤:(一):创建一个Windows窗体应用程序(二):在该窗体中添加两个按钮,用来打开指定文件,分别用来以随机名称创建文件文件夹。(三):代码如下:1privatevoidbutton1_Click(objectsender,EventArgse)2{3FolderBrowserDialogfolderBrowser=newFolderBrowserDialog();//创建文件夹对话对象4if(folderBrowser.ShowDialog()==DialogResult.OK)//判断是否选择文件夹5{6File.Create(folderBrowser.SelectedPath+"\"+Guid.NewGuid().ToString()+".txt");//根据GUID生成文件名7}8}910privatevoidbutton2_Click(objectsender,EventArgse)11{12FolderBrowserD...

c#中文件上传管理(获取文件的基本信息)

在网站开发过程中,经常要涉及对文件的操作,因此要实现多文件上传文件的永久删除以及对文件的搜索、下载和查看等多方面的操作。1,获取文件的大小步骤:(一):创建一个Windows窗体应用程序(二):在该窗体中添加一个按钮,用来打开指定文件,取其大小。(三):代码如下:1privatevoidbutton1_Click(objectsender,EventArgse)2{3OpenFileDialogopenFile=newOpenFileDialog();//创建打开文件对话对话框对象4if(openFile.ShowDialog()==DialogResult.OK)//判断是否选中文件5{6MessageBox.Show("文件长度:"+File.Open(openFile.FileName,FileMode.Open).Length.ToString()+"字节");//弹出消息对话框7}8}(四):运行结果:上一例子中,使用File类的Open方法打开指定的文件,然后使用FileStream类的Length属性获取文件的长度。1,File类的Open方法用来打开指定路径上的Fi...

Git----创建远程分支,并将文件上传到创建的远程分支上

1、首先创建一个远程仓库   2、将远程仓库克隆到本地    (1)本地新建文件夹,命令行进入文件夹,执行clone操作     (2)gitclone git@github.com:Lucky-Syw/lucky888.git    (3)查看远程与本地分支:gitbranch-a     (4)创建远程分支,并查看是否创建成功     (5)切换到新创建的分支,并在本地分支master中添加文件,一起push到远程新建的分支branch1中  gitpush--set-upstreamoriginbranch1       ...

Git----GitHub上传本地文件到git

 1、首先在git上创建一个库,用来保存上传的本地文件 2、通过命令gitinit把这个目录变成git可以管理的仓库gitinit 3、将远程git库克隆一份保存到本地gitclonexxxxxxx示例:gitclonehttps://github.com/Lucky-Syw/practice.git//此链接的获取见下图   执行到此步骤,可以看到已经将远程git文件克隆到了本地桌面   4、将需要上传的文件可以拖动到桌面克隆的文件中5、进入到克隆到本地的文件夹中,将文件夹中的内容添加到版本库中,使用命令gitadd.添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件cd/Users/administrator/Desktop/gitadd. 6、用命令gitcommit告诉Git,把文件提交到仓库。引号内为提交说明gitcommit-m"firstcommitlucky" 7、把本地库的内容推送到远程,使用gitpush命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入...

Postman----Newman的使用

p.p1{margin:0;font:11pxMenlo;color:rgba(0,0,0,1);background-color:rgba(255,255,255,1)}span.s1{font-variant-ligatures:no-common-ligatures} 暂记:newman-c/Users/administrator/Desktop/Test.iBer_postman_collection.json  https://www.jianshu.com/p/dd0db1b13cfc  待学习...
代码星球 代码星球·2021-02-13
首页上一页...1516171819...下一页尾页