HttpRequest 和 HttpResponse 是什么?干嘛用的?
HttpRequest 是 django 接受用户发送多来的请求报文后,将报文封装到 HttpRequest 对象中去。
HttpResponse 返回的是一个应答的数据报文。render 内部已经封装好了 HttpResponse 类。
视图的第一个参数必须是 HttpRequest 对象,两点原因:表面上说,他是处理 web 请求的,所以必须是请求对象,根本上说,他是基于请求的一种 web 框架,所以,必须是请求对象。
因为 view 处理的是一个 request 对象,请求的所有属性我们都可以根据对象属性的查看方法来获取具体的信息:格式:request.属性
request.path 请求页面的路径,不包含域名
request.get_full_path 获取带参数的路径
request.method 页面的请求方式
request.GET GET 请求方式的数据
request.POST POST 请求方式的数据
request.COOKIES 获取 cookie
request.session 获取 session
request.FILES 上传图片(请求页面有 enctype="multipart/form-data"属性时 FILES 才有数据。?a=10 的键和值时怎么产生的,键是开发人员在编写代码时确定下来的,值时根据数据生成或者用户填写的,总之是不确定的。
403 错误:表示资源不可用,服务器理解客户的请求,但是拒绝处理它,通常由于服务器上文件和目录的权限设置导致的 web 访问错误。如何解决:
(1) 把中间件注释。
(2) 在表单内部添加{% scrf_token %}
request.GET.get()取值时如果一键多值情况,get 是覆盖的方式获取的。getlist()可以获取多值。
在一个有键无值的情况下,该键名 c 的值返回空。有键无值:c: getlist 返回的是列表,空列表在无键无值也没有默认值的情况下,返回的是 None 无键无值:e:None
HttpResponse 常见属性:
content: 表示返回的内容
charset: 表示 response 采用的编码字符集,默认是 utf-8
status_code:返回的 HTTP 响应状态码 3XX 是对请求继续进一步处理,常见的是重定向。
常见方法:
init:创建 httpResponse 对象完成返回内容的初始化
set_cookie:设置 Cookie 信息:格式:set_cookies('key','value',max_age=None,expires=None)
max_age 是一个整数,表示指定秒数后过期,expires 指定过期时间,默认两个星期后过期。
write 向响应体中写数据
应答对象:
方式一:render(request,”index.html”) 返回一个模板
render(request,”index.html”, context) 返回一个携带动态数据的页面
方式二:render_to_response(“index.html”) 返回一个模板页面
方式三:redirect(“/”) 重定向
方式四:HttpResponseRdeirect(“/”) 实现页面跳转功能
方式五:HttpResponse(”itcast1.0″)在返回到额页面中添加字符串内容
方式六:HttpResponseJson() 返回的页面中添加字符串内容。
JsonResponse 创建对象时候接收字典作为参数,返回的对象是一个 json 对象。
能接收 Json 格式数据的场景,都需要使用 view 的 JsonResponse 对象返回一个 json 格式数据
ajax 的使用场景,页面局部刷新功能。ajax 接收 Json 格式的数据。
在返回的应答报文中,可以看到 JsonResponse 应答的 content-Type 内容是 application/json
ajax 实现网页局部刷新功能:ajax 的 get()方法获取请求数据 ajax 的 each()方法遍历输出这些数据