Django框架之request对象

embedded/2024/10/19 5:26:09/

一、request对象

1、简介

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API。

ps:get请求携带的数据是有大小限制的,大概好像只有4KB左右,而post请求没有限制

2、form表单提交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
python">from django.shortcuts import renderdef register(request):return render(request, 'register.html')
  • urls
python">from django.contrib import admin
from django.urls import path
from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path("register/", views.register)
]
  • 前端路由地址访问
    • http://127.0.0.1:8000/register

3、form表单提交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)后端

python">from django.shortcuts import renderdef 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文件中的配置注释掉,在后面的学习中我们会逐步的解决掉这个问题
python">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视图函数中,通常会将请求对象作为第一个参数传递,例如:

python">from django.http import HttpResponsedef 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')

通过访问请求对象的属性和方法,您可以根据请求中的信息来动态生成响应,实现不同的业务逻辑和交互。


http://www.ppmy.cn/embedded/24007.html

相关文章

第三方软件测试机构-科技成果评价测试

科技成果评价测试是对科研成果的工作质量、学术水平、实际应用和成熟程度等方面进行的客观、具体、恰当的评价过程。这一评价过程有助于了解科技成果的质量和水平&#xff0c;以及其在学术和应用方面的价值和潜力。 科技成果评价测试主要包括以下几个方面&#xff1a; 工作质量…

Swift - 枚举

文章目录 Swift - 枚举1. 枚举的基本用法2. 关联值&#xff08;Associated Values&#xff09;3. 关联值举例4. 原始值5. 隐式原始值&#xff08;Implicitly Assigned Raw Values&#xff09;6. 递归枚举&#xff08;Recursive Enumeration&#xff09;7. MemoryLayout Swift -…

深入docker-swarm overlay网络模型

目录 1.简介 2.网络模型 3.docker_gwbridge网络 3.1.docker_gwbridge网关地址 3.2.检查docker_gwbridge网络 3.2.1.查找任务容器eth接口 3.2.2.查找ingress-sbox容器eth接口 4.检查ingress网络 4.1.检查ingress网络 4.2.检查ingress网络的命名空间 4.2.1.查找任务容…

保护您的连接:无线网络安全探究

目录 一.无线局域网安全 1. 概述 2. WEP 安全协议 3. WPA/WPA2/WPA3 安全协议 二.移动网络安全 三.实际案例 KRACK 漏洞 Stagefright 漏洞 四.结论 一.无线局域网安全 1. 概述 无线局域网&#xff08;WLAN&#xff09;安全是保护家庭和企业网络免受未经授权访问和攻击…

HTTP协议

文章目录 一、HTTP是什么&#xff1f;二、HTTP状态码三、持续连接和非持续连接非持续连接持续连接 四、缓存强制缓存协商缓存 五、优点和缺点优点缺点 总结 一、HTTP是什么&#xff1f; HTTP 是超文本传输协议&#xff0c;是一个在计算机世界里专门用来在两点之间传输数据的约…

JVM(Jvm如何管理空间?对象如何存储、管理?)

Jvm如何管理空间&#xff08;Java运行时数据区域与分配空间的方式&#xff09; ⭐运行时数据区域 程序计数器 程序计数器&#xff08;PC&#xff09;&#xff0c;是一块较小的内存空。它可以看作是当前线程所执行的字节码的行号指示器。Java虚拟机的多线程是通过时间片轮转调…

2024年北京高校数学建模校际联赛竞赛赛题浅析

一图流&#xff1a; 题目复杂性技术需求数据处理主要难点A题&#xff1a;格陵兰入海冰川3气象学、物理学、环境科学时间序列分析、空间数据处理多学科集成、预测模型的准确性和策略制定B题&#xff1a;铁道线路动态检测数据分析1数据科学、机器学习、信号处理实时数据流处理、异…

FebHost:什么是挪威.no域名,如何注册?

挪威国家域名介绍 挪威是一个位于北欧的国家&#xff0c;北面和西面是大西洋和北海&#xff0c;东面和南面则与瑞典、芬兰接壤。挪威是一个高度发达的经济体&#xff0c;其政府在经济管理和可持续发展方面也取得了很多成就。挪威的人均GDP在世界范围内排名非常靠前&#xff0c…