django学习——request用法
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用法相关推荐
- Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序
Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序 1.Django 的模板的render替换render_to_ ...
- python 客户端 如何获取手机_Python学习---Django的request扩展[获取用户设备信息]
关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...
- Python学习---Django的request扩展[获取用户设备信息]
关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [...'app01', # 注册app ] STATICFILES_DIRS = ...
- Django 学习小组:基于类的通用视图详解(一)
通过三周的时间我们开发了一个简单的个人 Blog,教程地址: 第一周:Django 学习小组:博客开发实战第一周教程 -- 编写博客的 Model 和首页面 第二周:Django 学习小组:博客开发实 ...
- 基于Pycharm的Django学习 —— 项目实战(Form和ModelForm)
项目实战 项目开发流程 项目准备工作 项目部门管理 UI设计 depart_list 模板继承 depart_add depart_delete depart_edit 项目用户管理 user_lis ...
- Django学习之路-基础篇
Django 学习之路 一.Django项目创建 1.项目结构 1.1. settings.py 文件 1.2 URL 1.3 视图函数 1.4 路由配置-path 二.请求与响应 2.1.请求和响应 ...
- Django学习总结①
Django学习总结① Django基础环境配置好以后,打开pycharm,创建Django项目 视图views 中需要导入 django.http ---> HttpResponsemodel ...
- Python Web框架Django学习(二)
python web框架Django学习(二) 目录: 三.Django创建APP 四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...
- django学习笔记03
原创博客地址:django学习笔记03 第一章,模型层 查询集API 一.QuerySet何时被提交 迭代 QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询 切片:如果使用切片的&q ...
最新文章
- python怎么读取文件-Python中怎么读写文件
- JavaScript实现combinationSum组合和算法(附完整源码)
- python脚本批量生成数据
- 快速列出所有字段_快速掌握目标课题的研究现状 | 应用实例
- 【C++ STL学习之二】容器vector大总结
- c++ cout 控制精度、宽度、进制
- 吴恩达深度学习4.2笔记_Convolutional Neural Networks_深度卷积模型
- 华为今年不发布Mate系列新机;一加宣布与OPPO合并:将成为OPPO旗下独立品牌;Gradle 7.1 发布|极客头条...
- 遥感大辞典_学习遥感必读的十本专业书
- 线性代数(9):线性正交
- 构建人人网社会化推荐引擎
- u盘linux系统 隐藏文件,轻松显示U盘隐藏的文件夹绝招
- matlab拟合成指数函数,用Matlab如何拟合指数函数?
- python简易中文名转英文小程序
- Maya 交互式播放
- 【附章4包装类】包装类的顶级理解
- 浙江省计算机程序比赛员,计算机学子在“图森未来杯”第十七届浙江省大学生程序设计竞赛中斩获金奖...
- Binding的三种方式
- 数据脱敏(Data Masking)学习
- myeclipse过期,注册码