Django如何拼接get请求?

如题所述

第1个回答  2024-09-05

导读:很多朋友问到关于Django如何拼接get请求的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

djangomodel的get和filter方法的区别

django的get和filter方法是djangomodel常用到的,搞清楚两者的区别非常重要。

为了说明它们两者的区别定义2个models

classStudent(models.Model):

name=models.CharField('姓名',max_length=20,default='')

age=models.CharField('年龄',max_length=20,default='')

classBook(models.Model):

student=models.ForeignKey(Student)

一.先说下django的get方法:

1django的get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。

比如我数据库里有一条记录,记录的name的值是"Python"的话,我用student=Student.objects.get(name='老王python'),

返回的是一个记录对象,你可以通过student.__dict__来查看,它返回的是一个字典的形式,{'key':valeus},key是字段的名称,而values是值的内容。

而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。

比如:student=Student.objects.get(name='老王'),你自己可以运行看下。

2如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。

比如我的student表里有一个记录:

idnameage

1python24

book表:

idstudent_id

11

21

我用

student=Student.objects.get(name='python')

book=Book.objects.get(student)

它也会报错,因为book表有2条记录和student表相匹配。

二.再说下djangofilter:

1django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

比如我数据库里有一条记录,记录的name的值是Python的话,我用student=Student.objects.filter(name='老王python')

它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。

DjangoRESTframework框架之GET,POST,PUT,PATCH,DELETE等API请求接口设计

一、API接口功能需求:设计一些接口URL,让前端/客户请求这个URL去获取数据并显示,更改数据(增删改查),达到前后端分离的效果

二、设计逻辑:通过http协议请求方式GET、POST、PUT、PATCH、DELETE设计符合RESTful规范的api接口也就是URL

三、简易源码:

3.序列化serializers

#导入模型类和rest_framework序列化模块serializers

from.modelsimportArticle

fromrest_frameworkimportserializers

#定义序列化类,使用继承ModelSerializer方法

classArticleSerializer(serializers.ModelSerializer):

classMeta:

model=Article#指定序列化的模型类

fields='_all_'#选取序列化字段,此处可自行选取字段

4.视图函数views

fromdjango.httpimportHttpResponse

fromdjango.views.decorators.csrfimportcsrf_exempt

from.modelsimportArticle

from.serializersimportArticleSerializer

fromrest_framework.renderersimportJSONRenderer

fromrest_framework.parsersimportJSONParser

#调用csrf装饰器csrf_exempt模块,解决跨域访问问题

#JSONRenderer它将Python的dict转换为JSON返回给客户端

#JSONParser负责将请求接收的JSON数据转换为dict

#写法一

#在需要跨域的视图上调用装饰器@csrf_exempt

@csrf_exempt

defarticle_list(request):

ifrequest.method=='GET':

arts=Article.objects.all()#获取模型类数据

ser=ArticleSerializer(instance=arts,many=True)#序列化数据instance

#下一步用rest_framework方法里的JSONRenderer方法渲染数据

json_data=JSONRenderer().render(ser.data)

returnHttpResponse(json_data,content_type='application/json',status=200)

#写法二

classJSONResponse(HttpResponse):

def_init(self,data,**kwargs):

content=JSONRenderer().render(data)

kwargs['content_type']='application/json'

super(JSONResponse,self)._init(content,**kwargs)

#根据id进行增删改操作接口

@csrf_exempt

defarticle_detail(request,id):

try:

art=Article.objects.get(id=id)

exceptArticle.DoesNotExistase:

returnHttpResponse(status=404)

备注:

*写法二中定义JSONResponse类将返回的数据data与content_type返回类型做了封装

*API接口

GET/POST

GET/PUT/PATCH/DELETE

*Postman测试效果图

Django接收并解析post/get请求参数

背景:Django开发api接口,接收前端传来的参数值并解析

POST请求

前端传输JSON格式,'Content-Type','application/json'

后端接收解析

GET请求

前端传输JSON格式,'Content-Type','application/json'

后端接收解析

求Django常用语法,接受get和post参数的方法

1、首先登录CentOS7系统,打开终端,进入python3虚拟环境,创建工程djbd,在工程中创建app,命令如下。

2、在工程的settings.py文件,添加app信息,并在allowed_host中添加本机ip。

3、在工程的urls.py文件include进app的urls.py,viurls.pyurls.py文件如下。

4、在app中创建urls.py文件cd../bookviurls.py,并写代码如下。

5、然后运行django工程cd..pythonmanage.pyrunserver192.168.128.25:8000,最后的ip就是填入allowed_host的本机ip,在8000端口上运行。

6、然后打开POSTMAN,可以是局域网中任意台电脑,请求方式为POST,网址和body传入参数如下图。

7、最后控制台打印出提交的参数something,就完成了。

Django使用POST和GET方法

2.在Views中定义方面

遇到一个问题,在login.html中

如果action为空的话,应该是默认使用当前的,填写表单后,一段时间打印的print(request.method)

一直都是get请求,不知道为什么,然后我也不知道修改了什么,就得到了预期。

如果您也遇到这种情况,请告诉我,谢谢!~

结语:以上就是首席CTO笔记为大家整理的关于Django如何拼接get请求的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于Django如何拼接get请求的相关内容别忘了在本站进行查找喔。

logo设计

创造品牌价值

¥500元起

APP开发

量身定制,源码交付

¥2000元起

商标注册

一个好品牌从商标开始

¥1480元起

公司注册

注册公司全程代办

¥0元起

    官方电话官方服务
      官方网站八戒财税知识产权八戒服务商企业需求数字市场
相似回答
大家正在搜