Response 的几个属性
. content 返回的内容
status_code 指定返回的状态码。比如可以强制返回404
write, 返回写入文件
response.flush() 冲一遍缓存
Redirect 重定向, 最好不要用绝对路径, 命名空间反向解析路径
redirect方法 (重定向)
redirect(to,permanent = False,* args,** kwargs)
将HttpResponseRedirect返回给传递参数的相应URL。
这个参数可以是:
模型:模型的get_absolute_url() 功能将被调用。
视图名称,可能带有参数:reverse()将用于反向解析名称。
绝对或相对URL,将用于重定向位置。
示例:
1、通过传递一些对象; 该对象的 get_absolute_url()方法将被调用来找出重定向URL:
from django.shortcuts import redirect
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object)
2、通过传递一个视图的名称和可选的一些位置或关键字参数; 该URL将通过以下reverse()方法反向解析:
def my_view(request):
...
return redirect('some-view-name', foo='bar')
3、通过传递一个硬编码的URL重定向到:
def my_view(request):
...
return redirect('/some/url/')
4、这也适用于完整的网址:
def my_view(request):
…
return redirect(‘https://example.com/’)
默认情况下,redirect()返回一个临时重定向。所有上述形式都接受permanent参数; 如果设置为True则返回永久重定向:
def my_view(request):
…
object = MyModel.objects.get(…)
return redirect(object, permanent=True)
应用举例
def get_ticket(request):
if random.randrange(10) > 5:
# 假设抢票忙了 重定向到hello页面
# return HttpResponseRedirect('/app/hello/')
# 不建议使用上面的绝对路径,重定向的时候建议使用命名空间进行反向解析
target= reverse('app:hello')
# HttpResponseRedirect还可以直接简写成redirect 导包就行
return HttpResponseRedirect(target)
return HttpResponse('恭喜抢到票了')
JsonResponse的说明
def get_json(request):
# 给移动端的回应都是用使用JsonResponse,可以给浏览器装个Json格式化工具
data={
"status":200,
"msg":'ok',
}
return JsonResponse(data=data)