一、request对象
1、简介
服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API。
ps:get请求携带的数据是有大小限制的,大概好像只有4KB左右,而post请求没有限制
2、提交GET请求
(1)前端
- form表单中action属性,不写默认是当前路由地址
- form表单中的method属性,不写默认是GET请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="get">
<p>username : <input type="text" name="username"></p>
<p>password : <input type="password" name="password"></p>
<p><input type="submit"></p>
</form>
</body>
</html>
(2)后端
- app01/views.py
from django.shortcuts import render
def register(request):
return render(request, 'register.html')
- urls
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path("register/", views.register)
]
- 前端路由地址访问
http://127.0.0.1:8000/register
3、提交POST请求
(1)前端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
<p>username : <input type="text" name="username"></p>
<p>password : <input type="password" name="password"></p>
<p><input type="submit"></p>
</form>
</body>
</html>
(2)后端
from django.shortcuts import render
def register(request):
return render(request, 'register.html')
(3)POST请求报错
- 当前端form表单发送POST请求时,会报一个错,导致后端崩溃
Forbidden (403)
CSRF verification failed. Request aborted.
You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.
If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for “same-origin” requests.
(4)解决办法
- 将settings.py文件中的配置注释掉,在后面的学习中我们会逐步的解决掉这个问题
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 将这个配置先注释掉
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
二、request对象属性和方法
在Django中,请求对象(HttpRequest
对象)是Django视图函数的一个重要参数,它包含了关于HTTP请求的各种信息。通过请求对象,您可以访问请求中的各种数据,如GET和POST参数、请求头、COOKIES、用户信息等。以下是一些常用的HttpRequest
对象的属性和方法:
1、request对象属性
request.GET
:一个类似字典的对象,可以通过键名来获取对应的值。request.POST
:它也是一个类似字典的对象request.method
:返回HTTP请求的方法,比如GET、POST等,并且是全大写的字符串形式。request.path
:表示请求的路径部分,不包括域名和查询参数。request.user
:表示当前用户的对象(如果用户已经通过身份验证)。request.META
:包含有关请求的元数据的字典,如请求头信息、IP地址等。request.headers
属性:表示请求头部信息,是一个类似字典的对象。- request.
COOKIES
属性:表示请求中的Cookie信息. request.session
属性:表示当前会话的信息.
2、request对象方法
request.GET.get(key, default=None)
:获取GET参数中指定键的值,只获取列表最后一个元素。request.GET.getlist()
:直接将列表取出request.POST.get(key, default=None)
:获取POST参数中指定键的值,只获取列表最后一个元素。request.POST.getlist()
:直接将列表取出request.COOKIES.get(key, default=None)
:获取COOKIES中指定键的值。request.is_secure()
:如果请求通过HTTPS,则返回True。request.is_ajax()
:如果请求是通过Ajax发送的,则返回True。get_full_path()
方法:返回完整的请求路径,包括域名、路径和查询参数。build_absolute_uri()
方法:根据当前请求构建一个完整的URL。
在Django视图函数中,通常会将请求对象作为第一个参数传递,例如:
from django.http import HttpResponse
def my_view(request):
# 访问请求对象的属性和方法
if request.method == 'GET':
# 处理GET请求
return HttpResponse('This is a GET request')
elif request.method == 'POST':
# 处理POST请求
return HttpResponse('This is a POST request')
通过访问请求对象的属性和方法,您可以根据请求中的信息来动态生成响应,实现不同的业务逻辑和交互。
标签:请求,框架,GET,对象,request,django,POST,Django From: https://www.cnblogs.com/xiao01/p/18102761