django-5

前言:web框架本质就是处理用户发起的请求,然后返回响应结果。请求,和响应就是框架中的数据流一、请求当页面被请求时,django会创建一个HttpRequest对象,该对象包含关于请求的元数据。然后django加载适当的视图,将HttpRequest对象作为第一个参数传递给视图函数(这就是为什么所有的视图的第一个参数都命名为request的原因)。每个视图负责返回一个HttpResponse对象。1.1 HttpRequest对象常用属性.body原始请求的body,类型是字节类型。.method代表请求中使用的http方法的字符串,保证是大写字母。例如在函数视图中通过判断request.method来处理不同的逻辑:.GET一个类似字典的对象,包含所有给定的HTTP GET参数(查询参数)。.POST一个类似字典的对象,包含所有给定的表单格式的HTTP POST参数。.FILES一个类似字典额对象,包含所有上传的文件。更多属性,请参考官方文档请求参数传递的类型利用HTTP协议向服务器传参有几种途径?查询字符串参数url中?后面的key=value形式的参数在django中通过request.GET属性获取请求体参数post方法的form表单在django中通过request.POST属性获取json格式和put,patch,delete方法传递的form表单在django中通过request.body属性获取文件上传的文件通过request.FILES属性获取路径参数在django中通过路由规则传递给视图二、响应与django自动创建请求对象不同,创建响应对象是你的责任。你写的每个视图都要负责实例化,填充和返回一个响应对象。2.1 HttpResponse传入字符串典型的用法是将页面的内容以字符串、或字节字符串的形式传递给 HttpResponse 构造函数:也可以增量的形式添加内容,你可以使用response作为一个类似文件的对象:

1

2

3

>>> response = HttpResponse()

>>> response.write("<p>Here's the text of the Web page.</p>")

>>> response.write("<p>Here's another paragraph.</p>")

设置响应头字段使用HttpResponse.headers设置和删除一个字段。

1

2

3

>>> response = HttpResponse()

>>> response.headers['Age'] = 120

>>> del response.headers['Age']

设置状态码直接传递参数status给构造函数

1

2

3

>>> from django.http import HttpResponse

>>> response = HttpResponse("Here's the text of the Web page.", status=200)

 

JsonResponse对象class JsonResponse(data,encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, kwargs)是一个HttpResponse的子类,用来创建json编码的响应。默认的Content-Type为application/json。第一个参数data应该是字典。如果不是一个字典,就需要设置safe参数设置为False,它可以是任何json可序列化的对象。典型的用法:

1

2

3

4

5

>>> from django.http import JsonResponse

>>> response = JsonResponse({'foo': 'bar'})

>>> response.content

b'{"foo": "bar"}'

 

序列化非字典对象:为了对 dict 以外的对象进行序列化,你必须将 safe 参数设置为 False:

1

>>> response = JsonResponse([1, 2, 3], safe=False)

如果没有传递 safe=False,将引发一个 TypeError(opens new window)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值