学习笔记,仅供参考,有错必纠

参考自: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对象相关推荐

  1. Django从理论到实战(part43)--HttpResponse对象

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 HttpResponse对象 常用属性 常用方法 HttpResponse对象 Django服务器接收到 ...

  2. Django从理论到实战(part42)--QueryDict对象

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 QueryDict对象 QueryDict对象 我们平时用的request.GET和request.PO ...

  3. Django从理论到实战(part25)--数据库操作

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  4. Django从理论到实战(part21)--自定义模板过滤器

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  5. Django从理论到实战(part52)--登录、注销及登录限制

    学习笔记,仅供参考,有错必纠 文章目录 登录.注销及登录限制 登录 注销 登录限制 登录.注销及登录限制 登录 在使用authenticate进行验证后,如果验证通过了.那么会返回一个user对象,拿 ...

  6. Django从理论到实战(part51)--User模型

    学习笔记,仅供参考,有错必纠 摘自:pink老师教案 文章目录 User模型 字段 User模型的基本用法 创建用户 创建超级用户 修改密码 登录验证 User模型 User模型是Django框架的核 ...

  7. Django从理论到实战(part47)--ListView类

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 类视图 ListView类 举个例子 Paginator和Page类 Paginator常用属性 Pag ...

  8. Django从理论到实战(part45)--下载CSV文件

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 CSV文件 生成小的CSV文件 将`csv`文件定义成模板 生成大的CSV文件 StreamingHtt ...

  9. Django从理论到实战(part44)--JsonResponse类

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: JsonResponse类 如果我们想向浏览器传递Json类型数据,可以使用JsonResponse类.该类会将对 ...

最新文章

  1. Ubuntu 18.04安装Matlab 2018
  2. tomcat中conf/server.xml配置线程池不生效的问题注意添加线程池节点executor后要在connector中增加executor属性
  3. 最落寞的C9高校:从未没落
  4. Symantec Backup Exec Remote Agent 2010在Redhat Enterprise 6.6上启动问题
  5. 百度文本审核api_利用百度ai实现文本和图片审核
  6. redhat_yum install
  7. VisualStudio C++内存泄漏的检测方法(二)
  8. python 绘制分形树
  9. 代码意识流——花朵数问题(七)
  10. smtplib python教程_Python基于smtplib实现异步发送邮件服务
  11. php yield 个人小解_PHP中的性能优化利器:生成器 yield 理解
  12. c语言实验--九九乘法表,C语言实验报告(四)
  13. 聊聊外贸企业自建网站注意事项
  14. 所有网站都是用虚拟服务器吗,哪类网站不适合使用虚拟主机?
  15. python 黎曼猜想_黎曼猜想简析
  16. oracle游标添加数据,Oracle使用游标更新数据
  17. python代码画乌龟_乌龟教你Python编程——“玫瑰花”是怎么画的!
  18. VS2005错误 error PRJ0003 生成 cmd.exe 时出错
  19. noi 2017 简要题解
  20. Windows消息类型及说明

热门文章

  1. python中的协程:greenlet和gevent
  2. tp5视图里写原生php,tp5中使用原生sql查询总结
  3. 登录页面test记录
  4. 摩托车计算机辅助设计,摩托车消声器消声特性及计算机辅助设计研究
  5. php数组逗号连接,php – 如何使用逗号组合数组中的所有元素?
  6. Parse Fatal Error at line 4 column 43: 已经为元素 web-app 指定属性 xmlns。
  7. python 将pdf分页后插入至word中
  8. 使用sortable插件实现列表中表项的拖曳排序操作8-3
  9. 关系型数据库全表扫描分片详解
  10. Shell脚本自动备份数据库