广告
返回顶部
首页 > 资讯 > 后端开发 > Python >django的Request-7
  • 496
分享到

django的Request-7

djangoRequest 2023-01-30 22:01:30 496人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录 1. 从url中获取截取 2. QueryDict (1). QueryDict.get(key, [default]) (2)

目录

  • 1. 从url中获取截取
  • 2. QueryDict
    • (1). QueryDict.get(key, [default])
    • (2). QueryDict.getlist(key, [default])
  • 3. 查询字符串
  • 4. 请求体
    • 4.1 FORM表单
    • 4.2 非表单类型
  • 请求头
  • 其他

利用Http协议向服务器传参有以下几种方式

  1. 从url中截取
  2. 使用查询字符串
  3. 在请求体中发送数据
  4. 在http报文头 header 中发送数据

1. 从url中获取截取

在定义路由规则的时候,可以使用正则表达式截取数据,然后传到视图函数中,在视图函数中使用参数接收。

例:

浏览器向后端发送了一个请求,url为 /weather/beijing/20171001

  • 未命名参数

路由

url(r'^weather/([a-z]+)/(\d{8})$', views.weather, name="weather")
def weather(request, city, date):
    content = city+date
    return HttpResponse(content)

视图函数要使用位置参数接收,位置要对应,响应结果 beijing20171001

  • 命名参数
url(r'^demo/', include("demo.urls", namespace="demo"))
def weather(request, date, city):
    content = city+date
    return HttpResponse(content)

可以使用正则表达式给参数命名,参数接收的时候位置不需要照应,响应结果 beijing20171001

  • 从url中截取参数不区分 get post请求方式。

2. QueryDict

DjangoHttpRequest 对象中,属性 GETPOST 得到的都是 djanGo.http.QueryDict 所创建的实例,这是django自定义的一个类似字典的类。

python的字典中,一个键只能有一个值,当一个键赋值多次的时候,只会保留最后一个值。而在 HttpRequest 对象中,一个键往往有多个值。而 QueryDict 就可以用来处理一个键带多个值的情况。

(1). QueryDict.get(key, [default])

QueryDict.get(key, [default])

返回 key 的值。如果key 具有多个值,只返回最后(最新)的值。当key 不存在时返回一个默认值。
  
  

(2). QueryDict.getlist(key, [default])

QueryDict.getlist(key, [default])

返回 key 的值。如果key 具有多个值,以列表形式返回 key 的所有值。当key 不存在时返回一个空列表,设置了默认值则返回默认值。

3. 查询字符串

在url中格式如 ?a=1&b=2 的字符串叫做查询字符串,可以用过 request.GET 获取, request.GET 返回值是 QueryDict 对象。

url

/query?a=1&b=2&b=3

路由

url(r'^query', views.query, name="query")

视图函数

def query(request):
    query_dict = request.GET
    a = query_dict.get('a')
    b = query_dict.getlist('b')
    context = "a=%s,b=%s" % (a, b)
    return HttpResponse(context)

响应结果

a=1,b=['2', '3']
  • 查询字符串不区分 get post 请求方式。

4. 请求体

请求体获得参数的各种有多种,例如 表单,JSON,xml...不同格式的数据要区别对待

可以发送请求体数据的请求方式有POST、PUT、PATCH、DELETE。

django默认开启了csrf防护,会对上述的请求方式做验证,测试时可以关闭验证。

打开项目的配置文件 settings.py 注释掉 scrf中间件

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

4.1 Form表单

前端发送的表单类型的数据,可以使用 request.POST 获取, request.POST 返回值是 QueryDict 对象。

url:

demo/form

路由

url(r'^form', views.form, name="form")

表单数据

视图函数

def form(request):
    form_data = request.POST
    name = form_data.get("name")
    age = form_data.get("age")
    context = "name=%s,age=%s" % (name, age)
    return HttpResponse(context)

响应结果

name=xuanli,age=18

4.2 非表单类型

非表单类型的数据django无法自动解析,需要通过 request.body 获取原始的请求体数据,然后自己根据数据类型解析。 request.body 返回值是 bytes 对象。

例如前端请求的是json数据:

url

demo/json

路由

url(r'^json', views.get_json, name="json")

json数据

{"name": "xuanli", "age": "18"}

视图函数

def get_json(request):
    json_data = request.body
    json_data = json_data.decode()
    req_data = json.loads(json_data)
    name = req_data.get("name")
    age = req_data.get("age")
    context = "name=%s,age=%s" % (name, age)
    return HttpResponse(context)

响应结果

name=xuanli,age=18
  • python3.6不需要使用 decode() 解码

请求头

其他

--结束END--

本文标题: django的Request-7

本文链接: https://www.lsjlt.com/news/180021.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • django的Request-7
    目录 1. 从url中获取截取 2. QueryDict (1). QueryDict.get(key, [default]) (2)...
    99+
    2023-01-30
    django Request
  • django-7-django模型系统
    <<<常用的模型字段类型>>>https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types  InterField Char...
    99+
    2023-01-31
    模型 系统 django
  • Django 如何从request中获取前端数据
    Django ###request 如果说 urls.py 是 Django 中前端页面和后台程序桥梁,那么 request 就是桥上负责运输的小汽车 可以说后端接收到的来至前端的信...
    99+
    2022-11-12
  • Django怎么从request中获取前端数据
    这篇文章主要介绍Django怎么从request中获取前端数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!go适合做什么go是golang的简称,而golang可以做服务器端开发,且golang很适合做日志处理、数...
    99+
    2023-06-14
  • Django静态文件配置request对象方法ORM操作讲解
    目录django框架请求流程静态文件及相关配置请求方法request对象方法pycharm链接MySQLDjango链接MySQLDjango ORMORM语法ORM外键关联djan...
    99+
    2022-11-11
  • request.form()和request()的区别
    request.form()是Flask中的方法,用于获取表单数据。它返回一个MultiDict对象,可以通过键获取表单字段的值。r...
    99+
    2023-09-07
    区别
  • cnzz统计代码引起的Bad Request - Request Too Long的原因分析
    这期内容当中小编将会给大家带来有关cnzz统计代码引起的Bad Request - Request Too Long的原因分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问题起因今天一位网友向我们反馈,...
    99+
    2023-06-10
  • 如何进行Request的分析
    如何进行Request的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。介绍Request类是一个http请求的类,对于爬虫而言是一个很重要的类。通常在Spider中创建这样...
    99+
    2023-06-17
  • ASP的request对象怎么使用
    ASP的request对象是用于从客户端接收HTTP请求的对象。使用request对象可以获取客户端发送的信息,如查询字符串参数、表...
    99+
    2023-09-28
    ASP
  • PythonFlask的request对象使用详解
    必知的Flask的request Flask Request对象 来⾃客户端⽹⻚的数据作为全局请求对象发送到服务器。为了处理请求数据,应该从Flask模块导 ⼊。 Request对象...
    99+
    2023-02-10
    Python Flask request对象 Flask request Python request
  • Django基础7——用户认证系统、Session管理、CSRF安全防护机制
    文章目录 一、用户认证系统二、案例:登陆认证2.1 平台登入2.2 平台登出2.3 login_required装饰器 三、Django Session管理3.1 Django使用Session3.1.1 Cookie用法3.1...
    99+
    2023-08-30
    django csrf 安全 python linux
  • Request的包装类HttpServletRequestWrapper的使用说明
    目录Request的包装类HttpServletRequestWrapper使用大致的意思是:上述方案解决了HttpServletRequestWrapper和HttpServlet...
    99+
    2022-11-12
  • Javaweb中的Request(请求)和Response(响应)
    目录 一、概念 二、请求(Request) 1.例子简介 2.Request继承体系 3.Request获取请求数据   (1)请求行 (2)请求头 (3)请求体  4.优化请求体参数的获取 5.解决请求参数乱码问题  6.请求转发  请求...
    99+
    2023-09-12
    servlet 服务器 response request 请求响应
  • Request与Session的存值取值操作
    Request与Session的存值取值 request域的存值: request可以直接set进去 request.setAttribute("request", value)...
    99+
    2022-11-12
  • JavaWeb中的Request和Response怎么使用
    这篇“JavaWeb中的Request和Response怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaWeb...
    99+
    2023-07-05
  • 怎么做一个完美的Pull Request
    这篇文章主要讲解了“怎么做一个完美的Pull Request”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么做一个完美的Pull Request”吧!1....
    99+
    2022-10-19
  • Request Method的请求方法是什么
    这篇文章主要介绍“Request Method的请求方法是什么”,在日常操作中,相信很多人在Request Method的请求方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • pytest文档内置fixture的request详情
    目录前言一、FixtureRequest二、request.param三、request.config四、request.module五、request的相关成员对象前言 reque...
    99+
    2022-11-11
  • request如何获取body的json数据
    在request中可以获取到来自Http请求的body数据 比如获取json格式数据 代码: import com.alibaba.dubbo.common.utils.IOU...
    99+
    2022-11-12
  • 详解CentOS 7操作系统下GitLab 7的安装
    CentOS GitLab 7 安装GitLab 是一款便捷的 Git 项目管理工具,通过 GitLab,我们可以很方便地管理代码版本,协同开发以及项目管理。本文介绍了 CentOS 7 操作系统下 GitLab 7 的安装过程。准备工作在...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作