004 Django 响应
响应
request 参数怎么用?
我们每一次新建路由的时候,都需要默认传递一个参数 request,这个request其实就像是字典一样,我们可以获取内部的值
# urls.py 文件内
from django.urls import path
from . import views
urlpatterns = [
path('testRequest',views.testRequest),
]
# views.py 文件内
from django.http import HttpResponse
def testRequest(request):
print("Request的路由地址是" , request.path_info)
print("Request的模式是" , request.method)
print("Request的请求参数有" , request.GET)
return HttpResponse("请求成功!请查看终端")
我们在浏览器地址栏输入
http://127.0.0.1:8000/testRequest
最终输出的结果为:
Request的路由地址是 /testRequest
Request的模式是 GET
Request的请求参数有 <QueryDict: {}>
可以看到我们的请求路由以及请求模式都被打印出来了,但是我们的请求参数是一个空的 QueryDict 对象,我们可以向他内部添加值
我们在浏览器地址栏输入
http://127.0.0.1:8000/testRequest?a=123&b=654
最终输出的结果为:
Request的路由地址是 /testRequest
Request的模式是 GET
Request的请求参数有 <QueryDict: {'a': ['123'], 'b': ['654']}>
可以看到我们现在的 QueryDict 内部就有值了,虽然看起来像是一个字典,但是默认值的数据类型是一个列表
requests 中的请求参数
请求名字 | 作用 |
---|---|
COOKIES | Python字典,包含所有的cookie,键和值都为字符串 |
session | 似于字典的对象,表示当前的会话 |
body | body:字符串,请求体的内容(POST或PUT) |
scheme | scheme :请求协议('http' /'https') |
request.get_full_path() | 请求的完整路径 |
request.META | 请求中的元数据(消息头) |
request.META[‘REMOTE_ADDR’] |
客户端IP地址 |
path_info | URL字符串(路由的地址) |
method | 表示HTTP请求方法,常用值: 'GET'、'POST' |
GET | QueryDict查询字典的对象,包含get请求方式的所有数据 |
POST | QueryDict查询字典的对象,包含post请求方式的所有数据 |
FILES | 类似于字典的对象,包含所有的.上传文件信息 |
响应状态码
常见数字 | 说明 |
---|---|
200 | 请求成功 |
301 | 永久重定向 |
302 | 临时重定向 |
404 | 请求的资源不存在 |
500 | 内部服务器错误 |
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状
态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种
类型:
分类 | 描述 |
---|---|
1 ** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 操作被成功接收并处理成功 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
HttpResponse()
HttpResponse(content=响应体,content_type=响应体数据类型, status=状态码)
作用:
-
向客户端浏览器返回响应
-
同时携带响应体内容
-
参数说明
-
content:表示返回的内容。
-
status_ code:返回的HTTP响应状态码(默认为200)。
-
content _type:指定返回数据的的MIME类型(默认为"text/html")。
浏览器会根据这个属性,来显示数据。
如果是text/html,那么就会解析这个字符串,
如果text/plain,那么就会显示一个纯文本。
-
-
常用的类型(content_type)
-
'text/html' (默认的,htmI文件 )
-
'text/plain' (纯文本)
-
'text/css' (css文件)
-
'text/javascript' (js文件)
-
'multipart/form-data' (文件提交)
-
'application/json' (json传输 )
-
'application/xml' (xml文件)
-
HttpResponse 子类
类型 | 作用 | 状态码 |
---|---|---|
HttpResponseRedirect | 重定向 | 302 |
HttpResponseNotModified | 未修改 | 304 |
HttpResponseBadRequest | 错误请求 | 400 |
HttpResponseNotFound | 没有对应的资源 | 404 |
HttpResponseForbidden | 请求被禁止 | 403 |
HttpResponseServerError | 服务器错误 | 500 |
跳转
return HttpResponseRedirect("www.baidu.com")