导读:很多朋友问到关于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元起
查
看
更
多