电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Django request.META.get()獲取不到header頭的原因分析

瀏覽:97日期:2024-09-10 08:49:04

在使用Django過程中需要開發一些API給其他系統使用,為了安全把Token等驗證信息放在header頭中。

如何獲取:

使用request.META.get('headerkey')來獲取

注意:

如果headerkey為auth-token,即headers={’auth-token’:’1234’}

應該使用request.META.get('HTTP_AUTH_TOKEN')獲取

headerkey中的小寫轉為大寫,橫線“-”轉為下劃線“_”,并且加上前綴HTTP

尤其注意headerkey中不應該包含 HTTP前綴,以及符號'_',否則會取不到對應的值

補充:Django中獲取參數(路徑,查詢,請求頭,請求體)

一、通常HTTP協議向服務器傳參有幾種途徑

提取URL的特定部分,如/weather/shanghai/2018,可以在服務器端的路由中用正則表達式截取;

查詢字符串(query string),形如key1=value1&key2=value2;

請求體(body)中發送的數據,比如表單數據、json、xml;

在http報文的頭(header)中。

1.URL中參數的獲取

在定義路由URL時,可以使用正則表達式提取參數的方法從URL中獲取請求參數,Django會將提取的參數直接傳遞到視圖的傳入參數中。

1. 1未命名參數按定義順序傳遞

注意:參數獲取的順序與url中參數的位置一一對應,不能互換

url(r’^users/([a-z]+)/(d{4})/$’, views.get_user), def get_user(request, name, ID): print(’name=%s’ % name) print(’id=%s’ % id) return HttpResponse(’OK’)

1.2 命名參數按名字傳遞

注意:如果在路由中指定了參數的名字,name接收參數時,必須要使用路由中指定的參數名稱,不能換成其他名字,此時,兩個參數位置可以互換。

url(r’^users/(?P<name>[a-z]+)/(?P<id>d{4})/$’, views.users), def weather(request, name, id): print(’name=%s’ % name) print(’id=%s’ % id) return HttpResponse(’OK’)2.獲取請求路徑中的查詢字符串參數

(形如?k1=v1&k2=v2),可以通過request.GET屬性獲取,返回QueryDict對象。

什么是QueryDict對象?

定義在django.http.QueryDict

HttpRequest對象的屬性GET、POST都是QueryDict類型的對象

與python字典不同,QueryDict類型的對象用來處理同一個鍵帶有多個值的情況

2.1方法get():根據鍵獲取值

如果一個鍵同時擁有多個值將獲取最后一個值

如果鍵不存在則返回None值,可以設置默認值進行后續處理

dict.get(’key’,value)==>可簡寫為: dict[’key’]

2.2方法getlist():根據鍵獲取值,值以列表返回,可以獲取指定鍵的所有值

如果鍵不存在則返回空列表[],可以設置默認值進行后續處理

dict.getlist(’鍵’,默認值)

2.3獲取參數實例

訪問路徑:/user/qs/?a=1&b=2&a=3

注意:查詢字符串不區分請求方式,客戶端GET,POST方式的請求,都可以通過request.GET獲取請求中的查詢字符串數據。

url(r’^qs/$’,views.get_value,name=’g_v’), def get_value(request): a = request.GET.get(’a’) #3 b = request.GET.get(’b’) #2 num_list = request.GET.getlist(’a’) #[’1’,’3’] print(a) print(b) print(num_list) return HttpResponse(reverse(’user:get_value’))3.請求體中的參數

3.1表單數據獲取

通過request.POST來獲取

注意:Django默認開啟了CSRF防護,會對上述請求方式進行CSRF防護驗證,在開發測試時可以關閉CSRF防護機制,方法為在settings.py文件中注釋掉CSRF中間件

url(r’^getbody/$’,views.get_body), def get_body(request): form_data = request.POST.get(’c’) print(form_data) return HttpResponse(form_data)

3.2非表單數據獲取

非表單類型的請求體數據,Django無法自動解析,可以通過request.body屬性獲取最原始的請求體數據,自己按照請求體格式(JSON、XML等)進行解析。request.body返回bytes類型

import json url(r’^getjson/$’,views.get_body_json), def get_body_json(request): # 得到的是一個二進制數據 json_str = request.body print(json_str) # b’{n 'f':200,n 'd':300n n}’ # 對二進制數據進行解碼,解碼得到json數據 json_str = json_str.decode() print(json_str) # {'f':200,'d':300} # 將json數據轉化成字典形式 json_data = json.loads(json_str) print(json_data) # {’f’: 200, ’d’: 300} # 獲取json數據,使用字典方式取值 print(json_data[’d’]) # 300 print(json_data[’f’]) # 200 return HttpResponse(’ok’)4.例如:Django獲取http請求頭內容

通過view函數傳遞過來的 reuqest,使用request.META.get('header key')來獲取

注意:

header key必須大寫,前綴必須是'HTTP',后面如果連接符是橫線“-”,要改成下劃線“_”。例如你的header的key為api_auth,那在Django中應該使用request.META.get('HTTP_API_AUTH')來獲取請求頭的數據。

5.其他常用HttpRequest對象屬性

request.method 請求方式

request.path 請求路徑

request.user 請求的用戶對象

request.FILES 一個類似于字典的對象,包含所有的上傳文件

request.encoding 一個字符串,表示請求的頁面的完整路徑,不包含域名和參數部分。

url(r’^otherattr/$’, views.other_attr), def other_attr(request): print(request.method) # POST print(request.path) # /user/otherattr/ print(request.encoding) # None:表示使用瀏覽器的默認設置,一般為utf-8,這個屬性是可寫的, # 可以通過修改它來修改訪問表單數據使用的編碼,接下來對屬性的任何訪問將使用新的encoding值。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Django
相關文章:
主站蜘蛛池模板: 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 台式恒温摇床价格_大容量恒温摇床厂家-上海量壹科学仪器有限公司 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 广州小程序开发_APP开发公司_分销商城系统定制_小跑科技 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 创绿家招商加盟网-除甲醛加盟-甲醛治理加盟-室内除甲醛加盟-创绿家招商官网 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 魔方网-培训咨询服务平台| Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 永嘉县奥阳陶瓷阀门有限公司 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 智慧养老_居家养老_社区养老_杰佳通| 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 |