Python: Django和Flask关于解析request的参数请求_wsgi.run_once': false, 'wsgi.url_scheme': 'http', -程序员宅基地

技术标签: python  

我们知道:

一、前端库requests,可以向服务端发请求。也有带参数或不带参数的。

   import requests
   payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
   r1 = requests.get('http://httpbin.org/get', params=payload)
   payload = {'key1': 'value1', 'key2': 'value2'}
   r2 = requests.post("http://httpbin.org/post", data=payload)
 

二、对于服务端:接收到客户端发起的r1和r2请求,如何处理其中的参数?

# 后端服务端
def get_price(request):
     
      #需要解析request 
      request.META 获取请求头信息
      request.body
      #请求的主体,返回的是一个字符串
      request.data
      #请求的数据部分,返回的是一个字典对象(除此之外,与request.body是很类似的)
      request.POST
      #获取post方式表单中提交的数据
      request.POST["username"]
      request.POST.get("username")
      request.GET
      获取get方式表单中或url提交的数据
      json_data = request.body
      # 获取文件
      file_obj = request.FILES.get('image')

三、关于request.GET、request.POST主要含义

1、GET属性
QueryDict类型的对象 和包含get请求方式的所有参数

(1) 前端request:

    params = {'security':code,'startdate':start_date,'enddate':close_date,'method':'get_price','unit':freq}
    payload = json.dumps(params)
    req = requests.get(url_data,params =payload,headers =headers) # get=>params; post=>data

后端获取request.GET信息如下:

request.GET

GET: <QueryDict: {'{"security": "000001.XSHE", "startdate": "2018-01-01", "endda
te": "2019-02-01", "method": "get_price", "unit": "1m"}': ['']}>

request.GET.keys()

=> dict_keys(['{"security": "000001.XSHE", "startdate": "2018-01-01", "endda
te": "2019-02-01", "method": "get_price", "unit": "1m"}'])

2、POST属性
QueryDict类型的对象和包含post请求方式的所有参数

和GET应类同。

3、session和cookies

# request中:
request.session["name"] = "root" 

name = request.sessin["name"]  # 

response.set_cookie('name','root') 

#response中:

response.set_cookie('passsword','*****',salt='*****') # 设置加密cookies

request.COOKIES.get("name")

request.get_signed_cookie("password",salt="****")

4、META
如果前端request中,带有下面头部信息:

headers= {"Content-Type": "application/json","Authorization": "JWT " + token}

如果你把JWT传到头文件中的话,那么,在META中可以获取JWT。如果没有传,HTTP不会自动生成的。

jwt = request.META['HTTP_AUTHORIZATION'] # 注意request前人工在token前加的“JWT ”四个字符

如下:

‘JWT eyJ0eXAiOiJKV1QiLCJhbGci9.eyJ1c2VybmFtZSI6ImhvbmdzbCIsInBh***iMTIzNHF3ZXIsIiwiZXhwIjoxNTY5MjIzNzM4LCJpYXQiOjE1NjkxODA1Mzh9.G-X85VbxEiVaivy5LLMBEWSNg_UGTaN0atDlV5h4v5Y’,

META 全文:

说明一下,request.environ 和request.META信息基本相同。


META: {
'ALLUSERSPROFILE': 'C:\\ProgramData', 

'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', 

'CLIENTNAME': 'DESKTOP-P*****J', 

'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',

'COMMONPROGRAMFILES(X86)': 'C:\\Program Files(x86)\\Common Files',

'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 

'COMPUTERNAME': 'iZkcdy1c********', 

'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', '

CONDA_DEFAULT_ENV': 'base', 

'CONDA_EXE': 'C:\\Users\\Administrator\\Anaconda3\\Scripts\\conda.exe', 

'CONDA_PREFIX': 'C:\\Users\\Administrator\\Anaconda3', 

'CONDA_PROMPT_MODIFIER': '(base) ', 

'CONDA_PYTHON_EXE': 'C:\\Users\\Administrator\\Anaconda3\\python.exe', 

'CONDA_SHLVL': '1', 

'FP_NO_HOST_CHECK': 'NO', 

'HOMEDRIVE': 'C:', 

'HOMEPATH': '\\Users\\Administrator', 

'JQ_ID': '137**********', 

'JQ_PWD': '*********',

'LOCALAPPDATA': 'C:\\Users\\Administrator\\AppData\\Local',

'LOGONSERVER': '\\\\iZkcdy1ci******', 

'MY_WEBAPI_PASSWORD': '********,', 

'MY_WEBAPI_USERNAME': '*******',

 'NUMBER_OF_PROCESSORS': '8',

'OS': 'Windows_NT',
'PATH': 'C:\\Users\\Administrator\\Anaconda3;C:\\Users\\Administrator\\Anaconda3\\Library\\mingw-w64\\bin;
C:\\Users\\Administrator\\Anaconda3\\Library\\usr\\bin;C:\\Users\\Administrator\\Anaconda3\\Library\\bin;
C:\\Users\\Administrator\\Anaconda3\\Scripts;
C:\\Users\\Administrator\\Anaconda3\\bin;
C:\\Users\\Administrator\\Anaconda3\\condabin;
C:\\Program Files (x86)\\Python36-32\\Scripts;
C:\\Program Files (x86)\\Python36-32;
C:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\bin;
C:\\Windows\\system32;
C:\\Windows;
C:\\Windows\\System32\\Wbem;
C:\\Windows\\System32\\WindowsPowerShell\\v1.0;
C:\\Program Files (x86)\\Windows Kits\\8.1\\Windows Performance Toolkit;
C:\\Users\\Administrator\\.cargo\\bin;
C:\\Users\\Administrator\\AppData\\Local\\atom\\bin',

 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW',

 'PROCESSOR_ARCHITECTURE': 'AMD64', 

'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 79 Stepping 1, GenuineIntel', 

'PROCESSOR_LEVEL': '6',

 'PROCESSOR_REVISION': '4f01', 

'PROGRAMDATA': 'C:\\ProgramData', 

'PROGRAMFILES': 'C:\\Program Files', 

'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 

'PROGRAMW6432': 'C:\\Program Files', 

'PROMPT': '(base) $P$G',

'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules', 

'PUBLIC': 'C:\\Users\\Public', 

'SESSIONNAME': 'RDP-Tcp#137', 

'SYSTEMDRIVE': 'C:', 

'SYSTEMROOT': 'C:\\Windows', 

'TEMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2', 

'TMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2', 

'USERDOMAIN': 'iZkcdy1*******',

'USERDOMAIN_ROAMINGPROFILE': 'iZkcdy1*******', 

'USERNAME': 'Administrator', 

'USERPROFILE': 'C:\\Users\\Administrator', 

'VS140COMNTOOLS': 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\', 

'WINDIR': 'C:\\Windows',

 'DJANGO_SETTINGS_MODULE': 'web_api.settings',

 'RUN_MAIN': 'true',

 'SERVER_NAME': 'iZkcd********', 

'GATEWAY_INTERFACE': 'CGI/1.1',

 'SERVER_PORT': '*******', 

'REMOTE_HOST': '', 

'CONTENT_LENGTH': '',
 'SCRIPT_NAME': '', 
'SERVER_PROTOCOL': 'HTTP/1.1', 

'SERVER_SOFTWARE': 'WSGIServer/0.2', 

'REQUEST_METHOD': 'GET',

 'PATH_INFO': '/data/',

 'QUERY_STRING': '%7B%22security%22:%20%22000001.XSHE%22,%20%22startdate%22:%20%222018-01-01%22,%20%22enddate%22:%20%222019-02-01%22,%20%22method%22:%20%22get_price%22,%20%22unit%22:%20%221m%22%7D', 

'REMOTE_ADDR':'101.88.1******', 

'CONTENT_TYPE': 'text/plain', 

'HTTP_HOST': '103.10.*******',

'HTTP_USER_AGENT': 'python-requests/2.21.0', 

'HTTP_ACCEPT_ENCODING': 'gzip, deflate', 

'HTTP_ACCEPT': '*/*', 

'HTTP_CONNECTION': 'keep-alive',

 'HTTP_AUTHORIZATION': 'JWTeyJ0eXAiOiJKV1QiLCJhbGci*****9.eyJ1c2VybmFtZSI6ImhvbmdzbCIsInBh********iMTIzNHF3ZXIsIiwiZXhwIjoxNTY5MjIzNzM4LCJpYXQiOjE1NjkxODA1Mzh9.G-X85VbxEiVaivy5LLMBEWSNg_UGTaN0atDlV5h4v5Y',

 'wsgi.input': <django.core.handlers.wsgi.LimitedStream object at 0x000000CD037264E0>,
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>,
 'wsgi.version': (1, 0), 
'wsgi.run_once': False,
 'wsgi.url_scheme': 'http', 
'wsgi.multithread': True,
 'wsgi.multiprocess': False, 
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>}

四、常用的django的一些操作


request.POST.keys() # dict_keys 类型
request.GET.keys()

五、对于Flask库

获得GET请求:
request.args.get('out')
关键词:args
只能获得GET请求参数:
完整语句:
request.args.get(key)
获得POST参数:
request.form.get(‘username’)
同样只能获得POST,得不到GET
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wowotuo/article/details/101081048

智能推荐

git - 基础 - 01 - git reset --hard 回滚以后,看不到之前的分支版本怎么解决:_git reset 之后 看不到其它分支-程序员宅基地

文章浏览阅读961次。前言:git reset -- hard,使用的时候,在不同的分支切换比较方便:但是切换之后,在一个分支更新后,看不到原来的东西了。1 切换方便:2 利用git log 找回,HARD RESET 的 commit的ID号码$ git log -g3 再切换回去:然后用“$ git reset --hard 2f564ec5fde6b5982e93ba067209..._git reset 之后 看不到其它分支

three.js GLTFLoader加载的glb/gltf色去色彩都成了黑白色 问题解决_gltfloader.load加载.glb格式文件时为什么没有色彩的-程序员宅基地

文章浏览阅读1k次,点赞10次,收藏9次。加上 gltf.scene.traverse 中的代码 对图片色彩属性进行多方面处理。然后在add进场景中 就OK了。_gltfloader.load加载.glb格式文件时为什么没有色彩的

echarts从全国地图切换成省级地图地图不居中的问题_echart map点击之后将图居中-程序员宅基地

文章浏览阅读5.3k次,点赞5次,收藏6次。我的项目会有全国、省级两种版本。我在写全国地图的时候地图自己居中自适应。可是数据变成省级数据后,就会缩成一坨。全国地图如下:切换成省级数据变成如下:我就很疑惑,我也没有设置地图的位置啥的,应该就是echarts自己就会处理成居中的呀?后来自己想到了解决方法:方法一:手动更改zoom(缩放比例)以及center(当前视角的中心点),设置他们一个合适的数值就行了,可以解决问题方法二:..._echart map点击之后将图居中

No valid entries or contents found, this is not a valid OOXML (Office Open XML) file Excel导入问题-程序员宅基地

文章浏览阅读2w次,点赞10次,收藏6次。No valid entries or contents found, this is not a valid OOXML (Office Open XML) file_no valid entries or contents found, this is not a valid ooxml (office open x

系统架构设计师-理解认知:软考90问(1-30)_软考系统架构师常见问题-程序员宅基地

文章浏览阅读315次。软考90问,帮助您更好地了解软考高级中的系统架构设计师。_软考系统架构师常见问题

Spring框架(基于xml装配Bean)_bean 装配-程序员宅基地

文章浏览阅读968次。2 装配Bean概述大部分场景下,都会使用ApplicationContext的具体实现类,因为其对应的SpringIOC容器功能相对强大.而在Spring中提供了3种方法进行配置,以下3种方式都会被用到,有时还会混合使用,但是我们需要明确三者使用的优先级,这将更有利于我们开发  1) 在xml中显式配置  2) 在Java接口和类中实现配置  3) 隐式Bean的发现机制和自动装配原则优先级推荐  第一优先级:基于约定优于配置的原则,最优先的应该是通过隐式Bean的发现机制和自动装配的原则._bean 装配

随便推点

澳门地区3DTiles数据Cesium加载效果展示_cesium 效果-程序员宅基地

文章浏览阅读508次,点赞16次,收藏10次。使用谷歌倾斜模型3DTiles转换工具生产的澳门地区3DTiles数据,加载在Cesium上进行可视化展示,数据加载和显示效率上相当流畅,完全满足用户和开发者对谷歌倾斜模型数据的使用需求_cesium 效果

YUV转RGB,无除法,无浮点运算_yuv转rgb 去除浮点-程序员宅基地

文章浏览阅读648次。项目需要,将YUV422图像转换成RGB图像,考虑到效率问题,不能使用除法,不能使用浮点运算。参考http://blog.csdn.net/housisong/article/details/1859084不使用浮点数:在应用时,希望避免低速的浮点运算,所以需要整数算法,我们可以将先乘上一定的倍数来实现整数运算算法.不使用除法:通过移位运算代替除法,避免除法运算带来的效率问题。原公_yuv转rgb 去除浮点

[UnityShader]渲染队列、ZWrite和ZTest_一般会先渲染离相机远的,再渲染离相机近的-程序员宅基地

文章浏览阅读228次。http://blog.csdn.net/lyh916/article/details/45317571参考链接:http://blog.csdn.net/zhuyingqingfen/article/details/18979547http://blog.csdn.net/lysc_forever/article/details/13614449htt_一般会先渲染离相机远的,再渲染离相机近的

1850-接水问题 ZCMU_第 1 行两个整数 n 和 m,用一个空格隔开,分别表示人数和游戏机个数。 第 2 行-程序员宅基地

文章浏览阅读157次。Description问题描述   学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的 供水量相等,均为1。 现在有n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1 到n 编号,i 号同学的接水量为wi。接水开始时,1 到m 号同学各占一个水龙头,并同时打 开水龙头接水。当其中某名同学j 完成其接水量要求wj 后,下一名..._第 1 行两个整数 n 和 m,用一个空格隔开,分别表示人数和游戏机个数。 第 2 行

Oracle数据库注意事项-程序员宅基地

文章浏览阅读152次。conn system/manager //切换用户show user;exit;start d:\aa.sql;create user xiaoming identified by m123 //创建用户grant connect to xiaoming //授权grant resource to xiaominggrant select on emp to x..._oracle nvl 注意事項

VS2013使用lua5.3教程(两种方式)_vs2013怎么打开lua-程序员宅基地

文章浏览阅读6.1k次,点赞3次,收藏6次。第一步:去lua官网下载lua最新源码http://www.lua.org/ftp/ 然后解压解压后得到第二步:将源代码编译成静态库打开VS2013创建一个win32控制台应用程序 点击下一步设置为静态库,空项目,去掉预编译头 将解压出来的lua-5.3.4目录下的src文件中的头文件和源文件添加到项目中 最后点击生成解决方案 在项目目录lua5.3/Debug下面我们可以看到.li_vs2013怎么打开lua

推荐文章

热门文章

相关标签