共计 2129 个字符,预计需要花费 6 分钟才能阅读完成。
一、概述
HttpResponse 对象是由程序员创建的,是返回给客户端的数据,每种请求返回的响应是不同的
二、导入
from django.shortcuts import render
from django.http import HttpResponse
三、使用
-
HttpResponse 返回数据
示例
def index(request): return HttpResponse("lucky is a good man")
注意:以后大部分返回的数据都是 json 结构的
-
render() 返回页面
-
格式
render(request, template_name, context=None, content_type=None, status=None, using=None)
-
功能
将模板文件读取到内存,并根据上下文数据渲染模板,并以 content_type 为 text/html 形式返回界面字符串
-
参数
-
request 用于生成 response 对象
-
template_name 模板路径
-
context 上下文信息 (传递给模板的数据)
-
content_type 设置 MIME 类型和编码格式
-
status 状态码
-
示例
def index(request): return render(request, "App/index.html")
-
四、属性
-
content 返回的数据
-
charset 编码格式
-
status_code 状态码
-
示例
response = HttpResponse(content_type="text/html;charset=utf-8") response.content = "lucky is a handsome man" # response.charset = "utf8" response.status_code = 200
五、方法
-
init() 使用页面内容实例化 HttpResponse 对象
-
write(content) 以文件追加的方式写
-
flush() 以文件的方式输出缓冲区
-
cookie 相关
set_cookie()
delete_cookie()
六、重定向 HttpResponseRedirect
-
作用
服务器之间的跳转
-
方法
HttpResponseRedirect
redirect (简写 推荐使用)
-
导入
from django.http import HttpResponseRedirect
from django.shortcuts import redirect
-
示例
重定向无参路由
path(r'index/'),
def redirectView(request): return HttpResponseRedirect("/index/") return redirect("/index/")
重定向有参路由
path(r'args/<str:name>/<int:age>/'),
def redirectView(request): return HttpResponseRedirect("/args/lucky/18/") return redirect("/args/lucky/18/")
七、反向解析 reverse
-
作用
通过 include 命名空间与 path 的 name 值 反向动态构造出路由地址
-
导入
from django.urls import reverse
-
格式
- reverse(“namespace:name”) 构造无参路由
- reverse(“namespace:name”, args=[val1,val2…]) 构造有参路由
- reverse(“namespace:name”, kwargs={key1:val1…}) 构造关键字参数路由
-
示例
构造无参路由地址
path('index/', views.args, name='index') re_path(r'index/', views.args, name='index')
reverse("App:index") # /testresponse/
构造有参路由地址
path('args/<str:name>/<int:age>/', views.args, name='args') re_path(r'args/(\w+)/(\d+)/', views.args, name='args')
reverse("App:arg",args=['lucky',20]) # /arg/lucky/20/
构造关键字参数路由地址
path('args/<str:name>/<int:age>/', views.args, name='args') re_path(r'args/(?P<name>\w+)/(?P<age>\d+)/', views.args, name='args')
reverse("App:args",kwargs={'name':'lucky','age':20}) # /args/lucky/20/
八、子类 JsonResponse
-
作用
返回 Json 数据
-
优点
参数是字典
默认设置 content_type 为 application/json
帮助用户创建 json 类型的响应
-
导入
from django.http import JsonResponse
-
实例
def test_json(req): return JsonResponse({'name':'lucky', 'age':18})