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
猜你喜欢
- global.asa<SCRIPT LANGUAGE=VBScript RUNAT=Server>Sub&n
- 成为一个顶级设计师的第一准则:限制你的字体让你成为设计大的七个基本原则之一好~设计大师,或者也太吹牛了吧,但根据下面七个基本原则至少你可以成
- 下面通过对比来看看ASP中3种分页显示的性能,执行效率。一,使用存储过程分页,这种情况又分为两种方式:第一种,使用command对象,如下:
- It is much easier to criticize somebody else’s work than to create som
- 看看下面这个刚才提到的下拉列表的例子,就是将Application Object作为一个变量用来存储下拉列表的菜单项的:<%=&nbs
- PHP number_format() 函数实例格式化数字:<?php echo number_format("100000
- 一、前言 JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建
- 很多的朋友一而再,再而三的在Server.Mappath上卡壳,cnbruce也是一遍两遍地重复,还是不能全部解决,所以通过下面的举例,希望
- 一个将人民币数字转化为大写的asp函数,可以准确读出数字的大写,而不是简单的将数字翻译为大写。有了这个工具大家就可以很方便的写出大写的人民币
- 1. 查看数据库的版本select @@version2.查看数据库所在机器操作系统参数exec master..xp_msver3. 查看
- 简介模拟登录淘宝已经不是一件新鲜的事情了,过去我曾经使用get/post方式进行爬虫,同时也加入IP代理池进行跳过检验,但随着大型网站的升级
- 来自Six Revisions的一篇文章,作者对一些主流的浏览器进行了测试比较,测试主要针对以下几个方面进行:1.JavaScript执行速
- 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时
- <% If Err.Number <> 0 Th
- java JSP开发之Spring中Bean的使用在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例
- 相信为数不少的系统管理员每天都在做着同一样的工作——对数据进行备份。一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据
- 一直也搞不清楚px与em之间的关系和特点,看过95%的中国网站需要重写CSS以后后确实收获很大。平时都是用px来定义字体,所以无法用浏览器字
- JS操作二进制很麻烦,而且一直没有一个好的无损压缩工具来实现纯文本的压缩。所以钻研了一段时间的gzip,后来发现还是仅用 LZ77 比较容易
- 如何在独立服务器上创建用户?假设独立服务器是intels,我们用ADSI来创建一个用户liyanbing,初始口令定为3625:
- 高层的期望“3个月内,我希望网站能增加X注册用户,每日的独立IP到Y,网站盈利达到Z……”作为一个团队的领袖或者产品负责人,这样的期望是根据