Django框架之视图HttpResponse 对象

本篇文章主要内容为:视图中HttpResponse对象的属性、方法及json、redirect子类包含使用cookie使用、跳转、json返回的示例。

概述

HttpResponse对象是对用户访问的响应,与HttpRequest对象由django创建,HttpResponse对象是由开发人员创建。HttpResponse对象属于django.http模块,可以通过向构造函数传递网页内容的方式来构造HttpResponse实例,在实例化的同时可以指定浏览器对文本的处理方式。

用法

属性

Content 表示返回内容的类型

Charset 编码格式

Status_code 响应状态码:200、304、404、500

Content-type 指定输出的mime类型

方法

init 使用页面内容实例化HttpResponse对象

write(content) 以文件的形式写入

flush() 以文件的形式输出

set_cookie(key, val=’’, max_age=None, expire=None)

设置cookie

delete_cookie(key)

删除cookie;注意:如果删除一个不存在的key,什么都没有发生

cookie使用

路由

path(testCookie, views.test_cookie, name=testCookie),

存cookie

def test_cookie(request):
    """ cookie测试 """

    res = HttpResponse(测试cookie)
    res.set_cookie(name, this is cookie)

效果

通过 检查->查看网络 当前链接的响应头,可看到增加了一个cookie。

取cookie

def test_cookie(request):
    """ cookie测试 """

    res = HttpResponse(测试cookie)

    #res.set_cookie(name, this is cookie)

    cookies = request.COOKIES

    res.write("<h1>" + cookies[name] + "</h1>")

效果

删除cookie

def test_cookie(request):
    """ cookie测试 """

    res = HttpResponse(测试cookie)

    # res.set_cookie(name, this is cookie)
    # cookies = request.COOKIES
    # res.write("<h1>" + cookies[name] + "</h1>")

    res = HttpResponse(删除cookie)
    res.delete_cookie(name)

    return res

子类HttpResponseRedirect

功能:重定向,服务器端跳转

重定向路由

# 重定向路由

path(redirect1, views.redirect1, name=redirect1),
path(redirect2, views.redirect2, name=redirect2),

重定向视图

from django.http import HttpResponseRedirect


def redirect1(request):
    return HttpResponseRedirect(/myapp/redirect2)

def redirect2(request):
    return HttpResponse(重定向后的视图)

简写redirect(to)

to推荐使用反向解析

from django.http import HttpResponseRedirect
from django.shortcuts import redirect
def redirect1(request):

    # return HttpResponseRedirect(/myapp/redirect2)
    return redirect(redirect2)


def redirect2(request):
    return HttpResponse(重定向后的视图)

子类JsonResponse

返回json数据,一般用于异步请求

__init__(self, data)

Data 字典对象

注意:content-type类型为application/json

引入

from django.http import JsonResponse

使用

def redirect3(request):
    if request.is_ajax():
        info = JsonResponse({name: 张三, gender: 男, age: 40, hobby: 法律})
        return info
    else:
        return HttpResponse(不是json请求)
经验分享 程序员 微信小程序 职场和发展