django获取请求参数
1.获取URL路径中的参数
需求:假设用户访问127.0.0.1/user/1/2,你想获取1,2。应该怎么操作呢?
(1)未命名参数(位置参数)
# 在项目下的urls.py下增加设置:
url(r'^user/(\d+)/(\d+)$',views.index) # 在user.views的index视图中:
def index(request,a,b): # 接受的参数按顺序的
return HttpResponse("获得数据 %s %s"%(a,b))
(2)命名参数(关键字参数)
# 在项目下的urls.py下增加设置:
url(r'^user/(?P<category>\d+)/(?P<id>\d+)$',views.index) # 在user.views的index视图中:
def index(request,id,category): # 接受的参数可以不用按顺序的
return HttpResponse("获得数据 %s %s"%(category,id))
输出结果均是 获得数据 1 2
2.获取查询字符串
需求:获取127.0.0.1:8000/user?id=1&pid=99的查询字符串的值
# 在项目下的urls.py下增加设置:
url(r'^user/$',views.index) # 在user.views的index视图中:
def index(request):
id = request.GET.get("id")
pid = request.GET.get("pid")
return HttpResponse("获得数据 %s %s"%(id,pid))
注意:查询字符串的获取与请求方式无关:不管是 GET 还是 POST请求,都可以通过request.GET 属性来获取!!!
3.获取表单数据
用postman发送一个表单请求。
def index(request):
id = request.POST.get("id")
pid = request.POST.get("pid")
return HttpResponse("获得数据 %s %s"%(id,pid))
注意:request.POST 只能用来获取POST方式的请求体表单数据!
4.获取非表单类型
request.body属性:获取非表单类型的请求体数据,如:JSON、XML等,获取到的数据类型为bytes类型- 获取数据后,自己解析数据取出参数
def index(request):
json_str = request.body
json_str = json_str.decode() # python3.6及以上不用这一句代码
dict_data = json.loads(json_str) # loads把str转换为dict,dumps把dict转换为str
id = dict_data.get("id")
pid = dict_data.get("pid")
return HttpResponse("获得数据 %s %s"%(id,pid))
5.获取请求头的内容
常见的请求头如下:
CONTENT_LENGTH– The length of the request body (as a string).CONTENT_TYPE– The MIME type of the request body.HTTP_ACCEPT– Acceptable content types for the response.HTTP_ACCEPT_ENCODING– Acceptable encodings for the response.HTTP_ACCEPT_LANGUAGE– Acceptable languages for the response.HTTP_HOST– The HTTP Host header sent by the client.HTTP_REFERER– The referring page, if any.HTTP_USER_AGENT– The client’s user-agent string.QUERY_STRING– The query string, as a single (unparsed) string.REMOTE_ADDR– The IP address of the client.REMOTE_HOST– The hostname of the client.REMOTE_USER– The user authenticated by the Web server, if any.REQUEST_METHOD– A string such as"GET"or"POST".SERVER_NAME– The hostname of the server.SERVER_PORT– The port of the server (as a string).
获取请求头内容的用META
示例:
def index(request):
ip = request.META.get("REMOTE_ADDR")
return HttpResponse("你的ip地址是%s"%ip)
6.获取自定义请求头的内容
用postman增加一个自定义的请求头,key=id,value=1。那么应该怎么取呢?
代码如下:
def index(request):
id = request.META.get("HTTP_ID")
return HttpResponse("你的id:%s"%id)
注意:获取自定义的请求头属性值时,需要添加前缀 HTTP_ 并转成大写,作为键来获取值
附录(获取各种请求参数的方法):
| Attribute | Description |
|---|---|
| path | 请求页面的全路径,不包括域名端口参数。例如: /users/index |
| method | 一个全大写的字符串,表示请求中使用的HTTP方法,常用值:GET, POST,DELETE,PUT等。以下三种为 GET 请求:
|
| user |
|
| GET | 类似字典的 QueryDict 对象,包含url中所有的查询字符串参数 |
| POST | 类似字典的 QueryDict 对象,包含 POST 请求的所有键值对参数(表单数据) |
| body | 获取原始的请求体数据,获取到的数据为bytes类型 |
| FILES | 一个类似于字典的对象,包含所有的上传文件 |
| META | python 字典类型,封装了请求头headers中的数据- REMOTE_ADDR – 客户端的IP地址 - REQUEST_METHOD — 一个字符串,例如"GET" 或"POST- CONTENT_TYPE – 请求的正文的MIME 类型注意:对于用户添加到请求头中的键值,Django会给键加上前缀 HTTP_再转换成大写,再把键值保存到request.META中 |
| COOKIES | 一个标准的 python 字典,包含所有的 cookies, 键和值都是字符串 |
| session | 可读可写的类似字典的对象: django.contrib.sessions.backends.db.SessionStore。Django 提供了 session 模块,默认就会开启用来保存 session 数据 |
django获取请求参数的更多相关文章
- 学习SpringMVC——如何获取请求参数
@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...
- springMvc源码学习之:spirngMVC获取请求参数的方法2
@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView ...
- request对象常用API 获取请求参数的值 request应用 MVC设计模式
1 request对象常用API 1)表示web浏览器向web服务端的请求 2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1 ...
- struts2获取请求参数的三种方式及传递给JSP参数的方式
接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...
- 学习SpirngMVC之如何获取请求参数
学习SpringMVC——如何获取请求参数 @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...
- springMVC(spring)+WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
- Structs2 中拦截器获取请求参数
前言 环境:window 10,JDK 1.7,Tomcat 7 测试代码 package com.szxy.interceptor; import java.util.Map; import jav ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, ...
- spring(spring mvc)整合WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
随机推荐
- 腾讯云分析MTA HTML5接入方法
从微信服务号或订阅号里跳转到自己项目后,想在项目中统计出实时数据.历史趋势.实时访客.新老访客比.访客画像.地域信息.运营商.终端信息.页面排行.性能监控.访问深度.外部链接.入口页面.离开页面.渠道 ...
- AD RMS总结
AD RMS 认识篇 AD RMS(Active Directory Right Mangement Servic)活动目录权限服务. 首先我通过了解AD RMS的用途去深入学习AD RMS.在过去用 ...
- js点击重置按钮重置表单
<html><head><script type="text/javascript">function formReset(){document ...
- IE开发人员工具教程
写在前面 一直非常谷歌的控制台,因为我是做前端的,谷歌浏览器在我看来是解析JS最快的浏览器,所谓的熟能生巧,用熟悉了谷歌浏览器之后就特别喜欢用谷歌的控制台调试脚本.改变样式.查看HTML.查看资源加载 ...
- Canvas 图形组合方式
/** * 图形组合 */ function initDemo5() { var canvas = document.getElementById("demo5"); if (!c ...
- Code Blocks中配置OpenGL方法
关于在Code Blocks中配置OpenGL的方法,在网上一直没有找到实用的方法,后来在马龙师兄的帮助下终于配置成功了,现把配置过程记录如下. (1)下载codeblocks,最好是带mingw的版 ...
- UVa 11426 - GCD - Extreme (II) 转化+筛法生成欧拉函数表
<训练指南>p.125 设f[n] = gcd(1, n) + gcd(2, n) + …… + gcd(n - 1, n); 则所求答案为S[n] = f[2]+f[3]+……+f[n] ...
- java安全提交笔记【xmind图片】
- Android中如何为自定义控件增加状态?
在android开发中我们常常需要对控件进行相关操作,虽然网上已有很多对控件酷炫的操作,但小编今天给大家分享的纯属实用出发.在查看了一些列安卓教程和文档后,发现了一位大牛分享的非常不错的有关andro ...
- 利用VS2013 XSLT对 XML进行转换
1.打开VS2013 2.文件-->新建-->文件-->XML文件 3.文件-->新建-->文件-->XSLT文件 4.CTRL+SHIFT+S 保存2个文件位置 ...