Django 如何从request中获取前端数据

 更新时间:2021年04月23日 10:18:46   作者:何惜戈  
这篇文章主要介绍了Django从request中获取前端数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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" }}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 使用wxpython实现的一个简单图片浏览器实例

    使用wxpython实现的一个简单图片浏览器实例

    这篇文章主要介绍了使用wxpython实现的一个简单图片浏览器实例,根据自己的特殊需求而写,需要的朋友可以参考下
    2014-07-07
  • Python实现8种常用抽样方法

    Python实现8种常用抽样方法

    抽样是统计学、机器学习中非常重要,本文就用Python实现抽样方法,主要介绍了八种方法,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Python FTP操作类代码分享

    Python FTP操作类代码分享

    这篇文章主要介绍了Python FTP操作类,实现自动下载、自动上传,并可以递归目录操作,需要的朋友可以参考下
    2014-05-05
  • Python 基于win32com客户端实现Excel操作的详细过程

    Python 基于win32com客户端实现Excel操作的详细过程

    这篇文章主要介绍了Python 基于win32com客户端实现Excel操作的详细过程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Python实现钉钉/企业微信自动打卡的示例代码

    Python实现钉钉/企业微信自动打卡的示例代码

    这篇文章主要介绍了Python实现钉钉/企业微信自动打卡的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python数据合并的concat函数与merge函数详解

    Python数据合并的concat函数与merge函数详解

    大家都知道concat()函数可以沿着一条轴将多个对象进行堆叠,其使用方式类似数据库中的数据表合并,在使用merge()函数进行合并时,默认会使用重叠的列索引做为合并键,即取行索引重叠的部分,本文给大家介绍python 数据合并concat函数与merge函数,感兴趣的朋友一起看看吧
    2022-05-05
  • python3中布局背景颜色代码分析

    python3中布局背景颜色代码分析

    在本篇文章里小编给大家分享了一篇关于python3中布局背景颜色代码分析的相关内容,有兴趣的朋友们可以学习参考下。
    2020-12-12
  • Python三种打包exe方法案例教程

    Python三种打包exe方法案例教程

    这篇文章主要介绍了Python三种打包exe方法案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 基于Django的乐观锁与悲观锁解决订单并发问题详解

    基于Django的乐观锁与悲观锁解决订单并发问题详解

    这篇文章主要介绍了基于Django的乐观锁与悲观锁解决订单并发问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • yolov5中head修改为decouple head详解

    yolov5中head修改为decouple head详解

    现成的YOLOv5代码真的很香,不管口碑怎么样,我用着反正是挺爽的,下面这篇文章主要给大家介绍了关于yolov5中head修改为decouple head的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论