Django从理论到实战(part41)--WSGIRequest对象
学习笔记,仅供参考,有错必纠
参考自:Django打造大型企业官网–Huang Y;
文章目录
- WSGIRequest对象
- WSGIRequest对象常用属性
- WSGIRequest对象常用方法
WSGIRequest对象
Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest
对象,并且作为视图函数第一个参数传给视图函数,也就是我们经常看到的request
参数。
WSGIRequest对象常用属性
- 常用属性
属性 | 解释 |
---|---|
path | 请求服务器的完整“路径”,但不包含域名和参数 |
method |
代表当前请求的http 方法,比如是GET 还是POST
|
GET |
一个django.http.request.QueryDict 对象,操作起来类似于字典,这个属性中包含了所有以?xxx=xxx 的方式上传上来的参数
|
POST |
也是一个django.http.request.QueryDict 对象,这个属性中包含了所有以POST 方式上传上来的参数。
|
FILES |
也是一个django.http.request.QueryDict 对象,这个属性中包含了所有上传的文件
|
COOKIES |
一个标准的Python字典,包含所有的cookie ,键值对都是字符串类型
|
session |
一个类似于字典的对象,用来操作服务器的session
|
META |
存储的客户端发送上来的所有header 信息
|
REMOTE_ADDR | 客户端的IP地址 |
- 举个例子
在主views.py文件中,敲入如下代码:
# -*- coding: utf-8 -*-from django.shortcuts import render,redirect,reverse
from django.http import HttpResponsedef index(request):context = {"path":request.path, #请求服务器的完整“路径”,但不包含域名和参数"method":request.method, #当前请求的http方法"GET":request.GET, #一个django.http.request.QueryDict对象,这个属性中包含了所有以?xxx=xxx的方式上传上来的参数}return render(request, "index.html", context = context)def redir(request):return redirect(reverse("index"))
主urls.py文件:
from django.contrib import admin
from django.urls import path
from . import views
from django.conf.urls import includeurlpatterns = [path('admin/', admin.site.urls),path('', views.index, name = "index"),path("redirect/", views.redir, name = "redir"),path("front/", include("front.urls"))
]
模板文件index.html:
{% extends "basePage.html" %}{% block content %}<h1>首页</h1><p>欢迎来到图书管理系统!</p><table><tr><td>路径:</td><td>{{ path }}</td></tr><tr><td>http方法:</td><td>{{ method }}</td></tr><tr><td>GET参数:</td><td>{{ GET }}</td></tr></table>{% endblock %}
向http://127.0.0.1:8000/?name=huang&age=19发起请求:
向http://127.0.0.1:8000/redirect发起请求:
WSGIRequest对象常用方法
- 常用方法
方法 | 说明 |
---|---|
is_secure()
|
是否是采用https 协议
|
is_ajax()
|
是否采用ajax 发送的请求
|
get_host()
|
服务器的域名 |
get_full_path()
|
返回完整的path,如果有查询字符串,还会加上查询字符串 |
get_raw_uri()
|
获取请求的完整url
|
- 举个例子
在主views.py文件中,敲入如下代码:
from django.shortcuts import render,redirect,reverse
from django.http import HttpResponsedef index(request):context = {"is_secure":request.is_secure(), #请求服务器的完整“路径”,但不包含域名和参数"get_host":request.get_host(), #当前请求的http方法"get_full_path":request.get_full_path(), #一个django.http.request.QueryDict对象,这个属性中包含了所有以?xxx=xxx的方式上传上来的参数}return render(request, "index.html", context = context)
index.html:
{% extends "basePage.html" %}{% block content %}<h1>首页</h1><p>欢迎来到图书管理系统!</p><table><tr><td>是否是采用https协议:</td><td>{{ is_secure }}</td></tr><tr><td>服务器的域名:</td><td>{{ get_host }}</td></tr><tr><td>get_full_path:</td><td>{{ get_full_path }}</td></tr></table>{% endblock %}
向http://127.0.0.1:8000/?name=huang发起请求:
Django从理论到实战(part41)--WSGIRequest对象相关推荐
- Django从理论到实战(part43)--HttpResponse对象
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 HttpResponse对象 常用属性 常用方法 HttpResponse对象 Django服务器接收到 ...
- Django从理论到实战(part42)--QueryDict对象
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 QueryDict对象 QueryDict对象 我们平时用的request.GET和request.PO ...
- Django从理论到实战(part25)--数据库操作
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django从理论到实战(part21)--自定义模板过滤器
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django从理论到实战(part52)--登录、注销及登录限制
学习笔记,仅供参考,有错必纠 文章目录 登录.注销及登录限制 登录 注销 登录限制 登录.注销及登录限制 登录 在使用authenticate进行验证后,如果验证通过了.那么会返回一个user对象,拿 ...
- Django从理论到实战(part51)--User模型
学习笔记,仅供参考,有错必纠 摘自:pink老师教案 文章目录 User模型 字段 User模型的基本用法 创建用户 创建超级用户 修改密码 登录验证 User模型 User模型是Django框架的核 ...
- Django从理论到实战(part47)--ListView类
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 类视图 ListView类 举个例子 Paginator和Page类 Paginator常用属性 Pag ...
- Django从理论到实战(part45)--下载CSV文件
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 CSV文件 生成小的CSV文件 将`csv`文件定义成模板 生成大的CSV文件 StreamingHtt ...
- Django从理论到实战(part44)--JsonResponse类
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: JsonResponse类 如果我们想向浏览器传递Json类型数据,可以使用JsonResponse类.该类会将对 ...
最新文章
- Ubuntu 18.04安装Matlab 2018
- tomcat中conf/server.xml配置线程池不生效的问题注意添加线程池节点executor后要在connector中增加executor属性
- 最落寞的C9高校:从未没落
- Symantec Backup Exec Remote Agent 2010在Redhat Enterprise 6.6上启动问题
- 百度文本审核api_利用百度ai实现文本和图片审核
- redhat_yum install
- VisualStudio C++内存泄漏的检测方法(二)
- python 绘制分形树
- 代码意识流——花朵数问题(七)
- smtplib python教程_Python基于smtplib实现异步发送邮件服务
- php yield 个人小解_PHP中的性能优化利器:生成器 yield 理解
- c语言实验--九九乘法表,C语言实验报告(四)
- 聊聊外贸企业自建网站注意事项
- 所有网站都是用虚拟服务器吗,哪类网站不适合使用虚拟主机?
- python 黎曼猜想_黎曼猜想简析
- oracle游标添加数据,Oracle使用游标更新数据
- python代码画乌龟_乌龟教你Python编程——“玫瑰花”是怎么画的!
- VS2005错误 error PRJ0003 生成 cmd.exe 时出错
- noi 2017 简要题解
- Windows消息类型及说明
热门文章
- python中的协程:greenlet和gevent
- tp5视图里写原生php,tp5中使用原生sql查询总结
- 登录页面test记录
- 摩托车计算机辅助设计,摩托车消声器消声特性及计算机辅助设计研究
- php数组逗号连接,php – 如何使用逗号组合数组中的所有元素?
- Parse Fatal Error at line 4 column 43: 已经为元素 web-app 指定属性 xmlns。
- python 将pdf分页后插入至word中
- 使用sortable插件实现列表中表项的拖曳排序操作8-3
- 关系型数据库全表扫描分片详解
- Shell脚本自动备份数据库