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, POSTDELETEPUT等。以下三种为 GET 请求:

  • form 表单默认提交(或者method指定为get)
  • 在浏览器中输入地址直接请求
  • 网页中的超链接(a标签)
user
  • 已登录:AbstractUser对象;
  • 未登录:AnonymousUser对象;
    判断是否已经登录: request.user.is_authenticated(),返回true表示已经登录
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获取请求参数的更多相关文章

  1. 学习SpringMVC——如何获取请求参数

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...

  2. springMvc源码学习之:spirngMVC获取请求参数的方法2

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView ...

  3. request对象常用API 获取请求参数的值 request应用 MVC设计模式

    1 request对象常用API   1)表示web浏览器向web服务端的请求   2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1     ...

  4. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...

  5. 学习SpirngMVC之如何获取请求参数

    学习SpringMVC——如何获取请求参数   @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...

  6. springMVC(spring)+WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  7. Structs2 中拦截器获取请求参数

    前言 环境:window 10,JDK 1.7,Tomcat 7 测试代码 package com.szxy.interceptor; import java.util.Map; import jav ...

  8. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段

      ServletRequest 基本概念 JavaWeb中的 "Request"对象  实际为   HttpServletRequest  或者  ServletRequest, ...

  9. spring(spring mvc)整合WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

随机推荐

  1. 13 Django组件-cookie与session

    会话跟踪技术 1 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10 ...

  2. WPF系列教程——(三)使用Win10 Edge浏览器内核 - 简书

    原文:WPF系列教程--(三)使用Win10 Edge浏览器内核 - 简书 在需要显示一些 H5网站的时候自带的WebBrowser总是显示不了,WebBrowser使用的是IE内核,许多H5新特性都 ...

  3. Android Stadio 相关

    这几天,电脑坏了.重装系统,慢慢的学到了很多Android stadio 的相关知识.总结一下吧: 1.gradle 编译工具:在工程的gradle/wrapper/gradle–wrapper.pr ...

  4. android的dmtracedump工具生成trace文件图片 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    http://jingyan.baidu.com/article/c910274bfa6c1fcd361d2df7.html http://www.cnblogs.com/albert1017/p/3 ...

  5. 利用split方法计算字符串中出现字母最多的次数

    最近练习一些简单的算法题,知道自己很不聪明,但却没想到用了这么久,划算不划算是个需要考虑的问题, 其中有个算法是:统计一个字符串出现最多的字母,网上很多自己的见解,但是才疏学浅,有些地方看的有点困难, ...

  6. securecrt切换会话(session)的显示方式

    Window(窗口)-> Tabs(选项卡)/Tile Vertically(垂直平铺)/Tile Horizontally(水平平铺)/Cascade(瀑布,如下图效果)

  7. 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习

     孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...

  8. 孤荷凌寒自学python那些事第二天

    孤荷凌寒自学python第二天 Python的变量声明 (完整学习过程屏幕记录视频在文末,手写笔记在文末) Python的变量声明不必要显式指定变量类型 甚至也不需要进行显式的声明 比javascri ...

  9. (原)UE4 制作执行队列(Action Queue)

    队列和树在游戏开发中是比较常见的数据结构,在一定范围能保证执行的顺序. 结合一些设计模式技巧,往往可以做一些神器.     如加载块chunk管理,任务系统(当然也可以使用行为树来做复杂的任务系统). ...

  10. Node rescue/unrescue相关代码流程图