【django】HttpRequest对象的属性和路由补充
文章目录
- 一、HttpRequest对象的常用属性
- 1、request.GET:获取查询字符串参数
- 案例:
- 特别注意:
- 2、request.POST:post请求数据,只能获取表单参数
- 3、request.body:请求body,响应结果为字节类型
- 4、request.method:获取请求方法
- 5、request.user:获取当前访问的用户
- 6、request.path:当前请求路径
- 7、request.encoding:当前编码方式
- 8、request.FILES:客户端上传的文件
- 9、request.headers:客户端传递的请求头
- 二、路由
- 1、路径转换器
- str(多):默认就是使用字符串类型的,匹配除了路径分隔符/之外的任何非空字符串
- 案例:
- int(多):匹配0或者任意整数。并且返回的参数也是整数类型
- 案例
- slug:匹配任何由ascii字符或者数字、下划线组成的
- uuid:匹配格式化的uuid
- path:匹配任何非空字符,包含路径分隔符
- 2、正则路由匹配re_path
- 案例:不分组命名
- 案例:分组命名
一、HttpRequest对象的常用属性
1、request.GET:获取查询字符串参数
/crm/login?name=kobe&age=22
查询字符串参数:问号后面的key=value表示查询字符串参数。
路径参数表示:path('students/int:year/int:mouth/
路径参数在视图函数中用形式参数接收
get(self,request,mouth,year):
如果查询字符串参数中多个相同的参数,用get获取的是最后一个参数
可以采用getlist来进行获取多个相同的参数
案例:
http://127.0.0.1:8000/crm/login?name=kobe&age=22&name=zilv
print(self.request.GET.get('name',None)) zilv
print(self.request.GET.getlist('name','age')) ['kobe', 'zilv']
特别注意:
在drf框架中获取查询字符串参数也使用:request.query_params和request.GET
2、request.POST:post请求数据,只能获取表单参数
3、request.body:请求body,响应结果为字节类型
self.request.body
输出结果:
b'{\r\n "name":"kobe",\r\n "age":18\r\n}'
解码后并转化为字典格式的数据:
value=json.loads(self.request.body.decode(encoding='utf-8'))
输出结果
{'name': 'kobe', 'age': 18}
4、request.method:获取请求方法
5、request.user:获取当前访问的用户
6、request.path:当前请求路径
7、request.encoding:当前编码方式
8、request.FILES:客户端上传的文件
9、request.headers:客户端传递的请求头
二、路由
1、路径转换器
str(多):默认就是使用字符串类型的,匹配除了路径分隔符/之外的任何非空字符串
path('student/<str:pk>/',views.student_detail)
等同于
path('student/pk',views.student_detail)
案例:
路由:
urlpatterns=[path('students/<year>/<mouth>/',views.LoginView.as_view()),等同于 path('students/<str:year>/<str:mouth>/',views.LoginView.as_view()),
]
视图
class LoginView(View):def get(self,request,year,mouth):print(year)print(mouth)return JsonResponse({'year':year,'mouth':mouth})
输出结果:
{"year": "2022","mouth": "12"
}
int(多):匹配0或者任意整数。并且返回的参数也是整数类型
案例
http://127.0.0.1:8000/crm/students/2022/dfg/
当传入非数字时:会报错
urlpatterns=[path('students/<int:year>/<int:mouth>/',views.LoginView.as_view()),
]
输出结果:
{"year": 2022,"mouth": 12
}
slug:匹配任何由ascii字符或者数字、下划线组成的
uuid:匹配格式化的uuid
path:匹配任何非空字符,包含路径分隔符
2、正则路由匹配re_path
1、re_path需要导入:from django.urls import path,re_path
路由开头将path替换为re_path
2、括号中以r开头,防止转义
3、路由路径最开始使用^
开头:^students:表示路径最开始以students开头
4、路由路径结尾使用$
结尾:/$:表示路由以/结尾
案例:不分组命名
当将mouth和year进行调换位置
class LoginView(View):def get(self,request,mouth,year):print(year)print(mouth)return JsonResponse({'year':year,'mouth':mouth})
路由
urlpatterns=[re_path(r'^students/(\d{4})/([1-9]|1[0-2])/$',views.LoginView.as_view())
]
输出结果:不正常了
{"year": "12","mouth": "2022"
}
案例:分组命名
当将mouth和year进行调换位置
class LoginView(View):def get(self,request,mouth,year):print(year)print(mouth)return JsonResponse({'year':year,'mouth':mouth})
urlpatterns=[re_path(r'^students/(?P<year>\d{4})/(?P<mouth>[1-9]|1[0-2])/$',views.LoginView.as_view())
]
输出结果:
{"year": "2022","mouth": "12"
}
【django】HttpRequest对象的属性和路由补充相关推荐
- django form 对象is_bound属性
问题: 如果判断一个form实例中有没有数据? bug方法: 通过form实例的is_valid()方法来验证 1.Form类的定义 class YourName(Form):your_name = ...
- Django视图之HttpRequest对象和HttpResponse对象
五.HttpRequest对象 回想一下,利用HTTP协议向服务器传参有几种途径? 提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取: 查询字 ...
- 【django】HttpRequest对象
回想⼀下,利⽤HTTP协议向服务器传参有⼏种途径? a.提取URL的特定部分,如/film/zhangsan/20/,可以在服务器端的路由中⽤正则表达式截取: b.查询字符串(query string ...
- Django框架——HttpRequest对象
目录 1.URL路径参数 2.QueryDict对象 3.查询字符串Query String 4.请求体 5.请求头 6.其他 1.URL路径参数 (1)位置参数:使用正则分组,与视图中的参数一一对应 ...
- django请求与响应(HttpRequest对象和HttpResponse对象)
HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpReq ...
- Django(part7)--请求及HttpRequest对象
学习笔记,仅供参考 请求 HTTP请求 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法:GET,POST和HEAD方法(最常用) HTTP1.1新增了五种请求方 ...
- 正则,JWT token,容联云,celery,频道组,SKU,SPU,request对象的属性和方法的补充知识
?P 正则中分组匹配 [/^!@#$%] 正则中的非!@#¥% ? 非贪婪匹配 + 重复一次,贪婪匹配 re.I 忽略大小写 用户登录: JWT 会话保持?为什么会话保持? 会话保持是负载均衡最 ...
- Python Django Views逻辑处理 及 Urls路由规则
一.Views views模块为MVC中的C--Controller,逻辑处理,是连接MTV中model(数据库数据)与Template(视图模块)的结合,将数据库中的数据显示到视图中 视图的本质就是 ...
- Django Response对象3.4
HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调 ...
最新文章
- 查看Firefox中的缓存
- 电力系统稳定与控制_基于数据驱动的电力系统稳定性分析
- 什么是生存分析(survival analysis)?
- 解决程序与mysql的乱码问题
- 取IDE当前文档所在项目的目录[vs.net2008]
- 螃蟹wifi驱动在AP模式下存在挂死系统的问题
- java incompatible types: int cannot be converted to java.lang.Long
- 线上问题随笔记录数据库连接池问题
- C——任意一个偶数分解两个素数
- DiscuzNT 1.0正式版推出了
- 花书+吴恩达深度学习(十六)序列模型之双向循环网络 BRNN 和深度循环网络 Deep RNN
- resolv文件自动配置
- sql server 2008 r2 打开ssms管理工具,提示“值不能为空”问题
- 收藏+下载!Flink 社区最全学习渠道汇总
- vs2008的永久破解安装
- 如何进行自学软件测试?
- Leetcode刷题95. 不同的二叉搜索树 II
- web前端牛人博客整理
- 2021-07-26 SEO优化_关键词密度设置算法
- RK3399 hi3559A 平台离线语音识别、合成、翻译、声纹