Django的Web开发,HttpResponse里的redirect重定向及jsonresponse

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值