我们知道:

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

   import requestspayload = {'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.GETGET: <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='*****') # 设置加密cookiesrequest.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

Python: Django和Flask关于解析request的参数请求相关推荐

  1. python argparse nargs_Python | 使用argparse解析命令行参数

    今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse. 命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码 ...

  2. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

  3. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). ...

  4. 四十七、python学习之Django框架(DRF框架三):Request与Response、视图与视图集、路由

    Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据); 控制数据库查询的执行 一.Request与Response: 1. Request:   ...

  5. Python 里最强的Web框架,早就不是Django和Flask了

    来自:掘金,作者:ConnorZhang 链接:https://juejin.cn/post/6944598601674784775 如果说要用 Python 进行 web 开发,我想你一定会告诉我 ...

  6. python flask与django的区别_真正搞明白Python中Django和Flask框架的区别

    Django和Flask的区别 1.形象类比 如果Django类似于精装修的房子,自带豪华家具.非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便. 而Flask类似于毛坯房,自己想把房子装修 ...

  7. python django flask介绍_django和flask哪个值得研究学习

    对于初学者来说,找到一个好的框架来学习或者项目开发都是非常有必要的,而当你有一定开发经验后,你应该选择适合当前业务需要的框架.我这里并不想探讨哪个框架好哪个不好,这个永恒的话题就跟探讨"世界 ...

  8. python flask和django_真正搞明白Python中Django和Flask框架的区别

    在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...

  9. [Link]选择一个 Python Web 框架:Django vs Flask vs Pyramid

    选择一个 Python Web 框架:Django vs Flask vs Pyramid

  10. python的django_真正搞明白Python中Django和Flask框架的区别

    在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...

最新文章

  1. android:layout_gravity和android:gravity属性的区别
  2. java转安卓快吗_安卓Kotlin开发系列之Java快速转Kotlin
  3. 人机交互时,你认为机器人是有意识的还是无意识的?
  4. ​什么是TCP/IP
  5. AbpZero之企业微信---登录(拓展第三方auth授权登录)---第一步:查看AbpZero的auth第三方登录的底层机制...
  6. pymysql语法_如何使用PyMySQL模块进行增删改查?
  7. Qt Creator添加Qt Designer插件
  8. MS SQL入门基础:创建和使用图表
  9. 这个网盘下载60MB/s!PanDownload复活了!
  10. wordList04
  11. 深入剖析ORACLE数据库备份与恢复的原理
  12. java并发编程(12)-- 线程池 实际⽣产使⽤哪⼀个线程池 怎么设置
  13. PMP培训班内部资料,免费分享
  14. 黑苹果系统补丁 MacOS Unlocker for VMware 3.0 下载和解锁安装macOS X 10.14图文教程
  15. 原生JS实现登录功能,本地Cookie保存登录信息---【调用网易云API接口】---超详细讲解
  16. php怎么画五星红旗,php基于GD库画五星红旗的方法,phpgd库五星红旗
  17. Matplotlib等高线图
  18. 博客群建软件-Google会认为哪些网站是作弊网站?
  19. 三口烧瓶规格有哪些_三口烧瓶
  20. Excel如何批量查询手机号码归属地

热门文章

  1. [cocos2dx]斗地主随机发牌界面生成
  2. CDH使用Solr实现HBase二级索引
  3. 美国转基因食品的生产现状
  4. linux c 笔记 线程控制(一)
  5. PIC16F877A的50HZ正弦波
  6. 关于51CTO民意调查之自主添加google广告代码的几点意见
  7. spring-第十七篇之spring AOP基于注解的零配置方式
  8. mongodb在ubuntu下无法打开的问题
  9. python杂记-6(timedatetime模块)
  10. 本地拒绝服务漏洞修复建议