Django 如何从request中获取前端数据
作者:何惜戈 发布时间:2023-06-22 06:52:16
Django
###request
如果说 urls.py 是 Django 中前端页面和后台程序桥梁,那么 request 就是桥上负责运输的小汽车
可以说后端接收到的来至前端的信息几乎全部来自于requests中。
##request对象的属性
request.META
request.MATE获取的是一个标准的python字典。它包含了所有的HTTP请求信息
1 CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。
2 CONTENT_TYPE —— 请求的正文的MIME 类型。
3 HTTP_ACCEPT —— 响应可接收的Content-Type。
4 HTTP_ACCEPT_ENCODING —— 响应可接收的编码。
5 HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。
6 HTTP_HOST —— 客服端发送的HTTP Host 头部。
7HTTP_REFERER —— Referring 页面。
8 HTTP_USER_AGENT —— 客户端的user-agent 字符串。
9 QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。
10 REMOTE_ADDR —— 客户端的IP 地址。
11 REMOTE_HOST —— 客户端的主机名。
12 REMOTE_USER —— 服务器认证后的用户。
13 REQUEST_METHOD —— 一个字符串,例如"GET" 或"POST"。
14 SERVER_NAME —— 服务器的主机名。
15 SE0RVER_PORT —— 服务器的端口(是一个字符串)
获取请求的源主机:HttpRequest.get_host()
request.scheme
请求的方式,即http或者是https
request.path
请求的路径,这里的路径是指相对路径,也就是说一个登陆后台页面的请求:http://127.0.0.1:8000/admin 的路径是 /admin
获取完整路径(包括参数):HttpRequest.get_full_path()
获取绝对url: HttpRequest.bulid_absolute_uri(location) 此参数默认为完整路径
request.encoding
请求提交的数据的编码方式
request.session
request.session 获取的是一个类似于字典的对象,可以进行读取写入操作,常用来保存一些数据来实现会话跟踪技术。因为 HTTP 是一个无状态,不连续的协议。
如果想让服务器记住当前的访问对象,就需要记录请求者的一些信息来达到这个目的。
# 设置session
request.session["name"] = "root"
# 获取session
name = request.sessin["name"]
!!!说到这里需要提一下,django会默认为session使用json序列化。json序列化只能序列化一些基本数据类型,如数字,字符串,列表等。
所以session不能直接存储对象.可以简单的在settings中添加 SESSION_SERIALIZER = "django.contrib.sessions.serializers.PickleSerializer"
request.COOKIES
与session类似,区别是cookies数据是保存在客户端,session数据是保存在服务端。
相对而言session更安全,cookies在不同的浏览器上保存数据的大小限制也不同。但是,存在即合理。
cooike自有它的好处这里不多说。
# 设置cookies
response.set_cookie('name','root')
# 设置加密cookies
response.set_cookie('passsword','123456',salt='@#$!%^&')
# 获取cookie
request.COOKIES.get("name")
# 获取加密的cookie
request.get_signed_cookie("password",salt="@#$!%^&")
request.method
请求方式 POST/GET…
####下面正式开始获取数据
就是在这里遇见了一些小问题,所以导致我写这篇文章来记录一下
request.body
请求的主体,返回的是一个字符串
request.data
请求的数据部分,返回的是一个字典对象(除此之外,与request.body是很类似的)
request.POST
获取post方式表单中提交的数据
request.POST["username"]
request.POST.get("username")
request.GET
获取get方式表单中或url提交的数据
request.GET["username"]
request.GET.get("username")
补充:django框架下,前端调取数据详解
首先话痨一下,公司服务端使用的是python语言,而我们的后台项目使用的django框架,前端调取数据也是基于框架输出的。下面总结一下django框架下,前端调取数据的各种情况。
在前端页面调取数据,我们最常使用的方式总结为以下几种:
数据直接输出、for循环输出、if判断输出、日期格式化。
下面我们针对每一种情况看看django是怎样输出的
1、数据直接输出
{{ form.deliver_institution }}
2、for循环和if判断结合使用
{% for item in form.newborn_hearing_screening %}
{% if forloop.first %}
{% else %}
{{ item }}
{% endif %}
{% endfor %}
3、日期格式化
{{ my_date|date:"Y-m-d" }}
以上为个人经验,希望能给大家一个参考。
来源:https://blog.csdn.net/qq_37049781/article/details/79705890


猜你喜欢
- Simhash的算法简单的来说就是,从海量文本中快速搜索和已知simhash相差小于k位的simhash集合,这里每个文本都可以用一个sim
- 引子:在windows中python3使用 pycryptodemo 模块实现Aes加密解密。Aes加密有多种方式,自己可以上网了解下。 A
- 1、Python函数函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化Python中可
- 判断python中的一个字符串是否为空,可以使用如下方法1、使用字符串长度判断len(s) ==0 则字符串为空#!/user/local/
- 如下所示:df = df[df['cityname']==u'北京市']记得,如果用的python2,一定要
- 本文实例讲述了symfony2.4的twig中date用法。分享给大家供大家参考,具体如下:获得当前时间:{{ "now"
- 前言:在进行数据分析时,难免需要对数据集应用一些我们自定义的一些函数,或者其他库的函数,得到我们想要的数据,这种情况下,可能大家第一时间想到
- 0 引言年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,每天领
- 三元运算又称三目运算,是对简单的条件语句的简写简单条件语句:if 条件成立: val = 1else: val =
- Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。这篇文章使用tk
- 在开发中有个需求是一个选择城市的列表,看了看做成 * 联动好像不是特别方便 还是做成一整页可以按导航选取的就可以了话不多说开始上码我用的是va
- 当你在IE中点击一个Realplayer连接时,系统会自动启动Realplayer软件,不仅占用系统内存,而且在上网时Realplayer容
- 在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没
- 在《CSS二级菜单》中,如果一级菜单中的超链接是#,那么只要单击该一级菜单,那么与这个一级菜单对应的二级菜单就会一直显示在网页中,不能隐藏,
- 本文主要是记录ubuntu 16.04下python环境配置,具体内容如下对于ubuntu 16.04,由于本身是自带python,这样就减
- pip install xmind 使用場景xmind8 可以打开xmind2020 报错main_fest.xml(xmind8 打开另存
- explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.使用方法:在sel
- 如下所示:import numpy as npimport pandas as pdfrom pandas import Series,Da
- 在运用xmlhttp组件编写程序中,会碰到 "msxml3.dll 错误 ‘800c0005’&nb
- 本文从简单的例子入手,从打包文件去分析以下三个问题:webpack打包文件是怎样的?如何做到兼容各大模块化方案的?webpack3带来的新特