Django 使用Request 对象和Response 对象在系统间传递状态。

当请求一个页面时,Django会建立一个包含请求元数据的 HttpRequest 对象。 当Django 加载对应的视图时,HttpRequest 对象将作为视图函数的第一个参数。每个视图会返回一个HttpResponse 对象。

以下列举常用的几种属性:

1、request.user

一个AUTH_USER_MODEL 类型的对象,表示当前登录的用户。你可以通过is_authenticated() 区分它们,像这样:

if request.user.is_authenticated():# Do something for logged-in users.
else:# Do something for anonymous users.

如果登录的话,可以通过request.user获取当前登录的用户信息。

2、request.method

一个字符串,表示请求使用的HTTP 方法。必须使用大写。例如:

if request.method == 'GET':do_something()
elif request.method == 'POST':do_something_else()

3、request.GET/POST

request.GET: 一个类似于字典的对象,包含HTTP GET 的所有参数。

request.POST: 一个包含所有给定的HTTP POST参数的类字典对象,提供了包含表单数据的请求。

在HttpRequest 对象中,GET 和POST 属性是django.http.QueryDict 的实例,它是一个自定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单元素传递多个值给同一个键, 是一个显著的例子。

request.POST 和request.GET 的QueryDict 在一个正常的请求/响应循环中是不可变的。若要获得可变的版本,需要使用.copy()。

通常的用法是通过request.POST.get() 获得前端表单中的数据:

def myapp(request):if request.method == 'POST':username = request.POST.get('username', '')password = request.POST.get('password', '')...

通过request.GET.get() 方法获取url传递的参数:

views.py

#url 为 127.0.0.1:8000/index/?sort=hot
def myapp(request):if request.method == 'GET':sort = request.GET.get('sort', '')...

4、request.path

一个字符串,表示请求的页面的完整路径,不包含域名。

base.html

<li {% if request.path == '/' %}class="active"{% endif %}><a href="{% url 'index' %}">首页</a></li>

还可以通过过滤器request.path|slice:'x' 得到域名中指定的长度,从而进行判断。

5、request.META

request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常是浏览器的名称和版本号)。

我们可以用request.META.get()方法来得到其中需要的信息,但是前提条件是我们需要知道Header中存在哪些数据,如果不存在的话,需要对其进行报错处理。

我们可以通过如下方式知道Header中存在哪些数据:

values = request.META.items()
for i in values:print(i)

……

更多request的用法,参见官方文档:点此进入

django学习——request用法相关推荐

  1. Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序

    Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序 1.Django 的模板的render替换render_to_ ...

  2. python 客户端 如何获取手机_Python学习---Django的request扩展[获取用户设备信息]

    关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...

  3. Python学习---Django的request扩展[获取用户设备信息]

    关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [...'app01', # 注册app ] STATICFILES_DIRS = ...

  4. Django 学习小组:基于类的通用视图详解(一)

    通过三周的时间我们开发了一个简单的个人 Blog,教程地址: 第一周:Django 学习小组:博客开发实战第一周教程 -- 编写博客的 Model 和首页面 第二周:Django 学习小组:博客开发实 ...

  5. 基于Pycharm的Django学习 —— 项目实战(Form和ModelForm)

    项目实战 项目开发流程 项目准备工作 项目部门管理 UI设计 depart_list 模板继承 depart_add depart_delete depart_edit 项目用户管理 user_lis ...

  6. Django学习之路-基础篇

    Django 学习之路 一.Django项目创建 1.项目结构 1.1. settings.py 文件 1.2 URL 1.3 视图函数 1.4 路由配置-path 二.请求与响应 2.1.请求和响应 ...

  7. Django学习总结①

    Django学习总结① Django基础环境配置好以后,打开pycharm,创建Django项目 视图views 中需要导入 django.http ---> HttpResponsemodel ...

  8. Python Web框架Django学习(二)

    python web框架Django学习(二) 目录:  三.Django创建APP  四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...

  9. django学习笔记03

    原创博客地址:django学习笔记03 第一章,模型层 查询集API 一.QuerySet何时被提交 迭代 QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询 切片:如果使用切片的&q ...

最新文章

  1. python怎么读取文件-Python中怎么读写文件
  2. JavaScript实现combinationSum组合和算法(附完整源码)
  3. python脚本批量生成数据
  4. 快速列出所有字段_快速掌握目标课题的研究现状 | 应用实例
  5. 【C++ STL学习之二】容器vector大总结
  6. c++ cout 控制精度、宽度、进制
  7. 吴恩达深度学习4.2笔记_Convolutional Neural Networks_深度卷积模型
  8. 华为今年不发布Mate系列新机;一加宣布与OPPO合并:将成为OPPO旗下独立品牌;Gradle 7.1 发布|极客头条...
  9. 遥感大辞典_学习遥感必读的十本专业书
  10. 线性代数(9):线性正交
  11. 构建人人网社会化推荐引擎
  12. u盘linux系统 隐藏文件,轻松显示U盘隐藏的文件夹绝招
  13. matlab拟合成指数函数,用Matlab如何拟合指数函数?
  14. python简易中文名转英文小程序
  15. Maya 交互式播放
  16. 【附章4包装类】包装类的顶级理解
  17. 浙江省计算机程序比赛员,计算机学子在“图森未来杯”第十七届浙江省大学生程序设计竞赛中斩获金奖...
  18. Binding的三种方式
  19. 数据脱敏(Data Masking)学习
  20. myeclipse过期,注册码

热门文章

  1. 蓝桥杯求三角形的面积
  2. UML 是什么,包括什么,九种图
  3. [附源码]JSP+ssm计算机毕业设计图书管理系统的设计与实现07gad【源码、数据库、LW、部署】
  4. Interllij idea工具Flutter开发常用快捷键
  5. 计算机无法备份,win7电脑无法实现备份,错误提示0x80070422怎么办?
  6. QT控件之(QLabel)中加载了图片想清除掉
  7. 提高学习效率:必备学习软件推荐
  8. 文档智能不再难!百度开源十一边形战士文心ERNIE-Layout
  9. Oracle RMAN
  10. mac不识别移动硬盘导致无法拷贝资源