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

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

(0)

相关推荐

  • Django框架HttpRequest对象用法实例分析

    本文实例讲述了Django框架HttpRequest对象用法.分享给大家供大家参考,具体如下: 1.URL路径参数 (1)位置参数:使用正则分组,与视图中的参数一一对应,不可换位置 例: url(r'^(\d+)/(\d+)/$', views.index) def index(request, 参数1, 参数2): ... (2)关键字参数:参数位置可以变,与关键字保持一致即可 例: url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views

  • django日志默认打印request请求信息的方法示例

    需求 请求view中手动打印日志时中插入request的如下信息(每个request请求都记录可以使用中间件进行解决,但这里仅仅是在需要的地方手动打印): #统一附加日志内容 ADD_LOG = r'''{"username": request.user, "path": request.path, "request_id": request.id, "login_id": request.login_id}''' 旧的解决办

  • Django之全局使用request.user.username的实例详解

    我就废话不多说了,大家还是直接看代码吧! def pro_mgr(): """ 获取当前登陆用户的项目 :return: """ if DEVELOP_USER_NAME == 'admin': return Project.objects.all() return Project.objects.filter(prj_mgr=DEVELOP_USER_NAME) class DeployApplyForm(ModelForm): # proje

  • Django 请求Request的具体使用方法

    1 URL路径参数 在定义路由URL时,使用正则表达式提取参数的方法从URL中获取请求参数,Django会将提取的参数直接传递到视图的传入参数中. 未命名参数按顺序传递, 如 url(r'^index/([a-z]+)/(\d{4})/$', views.index), def index(request, parameter1, parameter2): print(parameter1) print(parameter2) return HttpResponse('OK') 有命名参数按名传

  • python自动化测试三部曲之request+django实现接口测试

    国庆期间准备写三篇博客,介绍和总结下接口测试,由于国庆期间带娃,没有按照计划完成,今天才完成第二篇,惭愧惭愧. 这里我第一篇博客的地址:https://www.jb51.net/article/197004.htm,主要是介绍unittest框架,有兴趣的同学们可以移步去查阅 这里废话少说,进入正题 我的思路是这样的 1.先用django实现登陆.增加.删除.查看4个接口 2.在excel定义好测试案例.然后读取excel中的案例,然后把案例用unittest框架组装和封装 3.启动django

  • 对Django 中request.get和request.post的区别详解

    Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法.GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.另外,还有PUT和DELETE方法. POST和GET都可以与服务器完成查,改,增,删操作. GET提交,请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接: POST提交,把提交的数据放置在HTTP包的包体中:因此,GET提交的数据会在地址栏中显示出来,而PO

  • Django 解决上传文件时,request.FILES为空的问题

    用html的form上传文件时,request.FILES为空,没有收到上传来的文件,但是在request.POST里找到了上传的文件名(只是一个字符串). 解决方法: 为form表单规定enctype属性,其值为"multipart/form-data". enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编

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

    Django ###request 如果说 urls.py 是 Django 中前端页面和后台程序桥梁,那么 request 就是桥上负责运输的小汽车 可以说后端接收到的来至前端的信息几乎全部来自于requests中. ##request对象的属性 request.META request.MATE获取的是一个标准的python字典.它包含了所有的HTTP请求信息 1 CONTENT_LENGTH -- 请求的正文的长度(是一个字符串). 2 CONTENT_TYPE -- 请求的正文的MIME

  • Django实现从数据库中获取到的数据转换为dict

    这种方式只能应用于从数据库中获取到的单条数据,例如models.Users.objects.get()获取到的数据 from django.forms.models import model_to_dict class Index(VIew): def get(self, request): userObj = models.Users.objects.get(id = 1) userDict = model_to_dict(userObj) print(userDict) return Htt

  • django框架实现模板中获取request 的各种信息示例

    本文实例讲述了django框架实现模板中获取request 的各种信息.分享给大家供大家参考,具体如下: 在做网页程序时,request,response 是少不了的,这是最基本的东西.但 django有自己的框架,在展示层,很少用到直接去取request的内容的.我以前做过java j2ee应用,有时候,经常在jsp页面用request 直接取得想要的内容.即使是用struts,也还是可以用request 去取内容的. 现在在重新用 django 重写一套程序,数据库还是用原来的,有些东西如果

  • python 实现分页显示从es中获取的数据方法

    注意:使用该方法,获取的数据总数目不能超过1万,否则出错 #在python3上运行 from elasticsearch import Elasticsearch from urllib3.connectionpool import xrange def get_page_data(result): for hit in result['hits']['hits']: print(hit) if __name__=='__main__': es_host = "0.0.0.0" por

  • class类在python中获取金融数据的实例方法

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就class类在python中获取金融数据的方法为大家带来讲解. 使用tushare获取所有A股每日交易数据,保存到本地数据库,同时每日更新数据库:根据行情数据进行可视化和简单的策略分析与回测.由于篇幅有限,本文着重介绍股票数据管理(下载.数据更新)的面向对象编程应用实例. #导入需要用到的模块 impor

  • ASP中Request对象获取客户端数据的顺序(容易忽略)

    在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写? strMessage = Request("msg") strMessage = Request.Form("msg") 而且,我也看过好多人写的代码,一律都是Request("")的写法,当然这样的写法并没有什么错. 只是大家应该注意 Request对象有几个集合来获取客户端提交的数据

  • Java如何在命令行中获取指定数据

    1.执行ipconfig /all获取主机所有网卡信息 并分析这些字符串,提取出有效网卡(网卡名称,mac地址,ipv4地址,掩码,网关,dns) 将网卡插入HashMap中,key是网卡的名称,value是网卡对象(包含mac和4个逻辑地址) 请输入网卡的名称,程序通过map的get方法取出此名称对应的网卡对象 根据网卡对象执行其方法getNetId()取出其网卡所在网络号进行打印 getBroadId()取出其广播号进行打印 2.根据网卡的ip和掩码扫描所有这个子网中可能存在的邻居 然后用p

  • django中使用POST方法获取POST数据

    在django中获取post数据,首先要规定post发送的数据类型是什么. 1.获取POST中表单键值数据 如果要在django的POST方法中获取表单数据,则在客户端使用JavaScript发送POST数据前,定义post请求头中的请求数据类型: xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 在django的views.py相关方法中,需要通过reques

  • SpringBoot如何配置获取request中body的json格式参数

    目录 背景 获取请求中的参数(非json格式参数) 获取方法 结论 获取POST请求json格式的参数 经过检索推荐方法(参看后边完整方法) 实现方法 使用 背景 最近开发项目,因为有第三方调用我们的接口,我们使用SpringBoot以JavaBean的方式接收了我们预期的参数,参数接收也没有什么异常.但是有一些需求问题需要沟通,需要拿到合作第三方传入的所有参数,来进行参数核验. 如何拿到请求的所有参数呢?正常的思路肯定是从request中获取,如果是GET请求,参数在请求路径中拼接:如果是PO

  • Mybatis如何从数据库中获取数据存为List类型(存为model)

    目录 从数据库中获取数据存为List类型(存为model) Mybatis存储List类型数据 从数据库中获取数据存为List类型(存为model) 从数据库中获取的数据,存到一个model中,需要注意两点. 一.在dao中,只能用List类型接受结果 二.要在mapper中写清楚resultType //DAO @Override public ArrayList<YourModel> getMainInfo(int id) { // TODO Auto-generated method s

随机推荐