使用django休息框架在post请求上获取自定义标题 [英] Getting custom header on post request with django rest framework

查看:226
本文介绍了使用django休息框架在post请求上获取自定义标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  curl --headerX- MyHeader:123--datatest = testhttp://127.0.0.1:8000/api/update_log/ 

在我的休息框架视图中,我想得到我的costum标题,如果自定义标题满足条件,我将继续分析我的发布数据。



好的,我的看法看起来像:

  class PostUpdateLogView(APIView):
throttle_classes =()
permission_classes =()
parser_classes =(
parsers.FormParser,
parsers.MultiPartParser,
parsers.JSONParser,


renderer_classes =(renderers.JSONRenderer,)

def post(self,request):
print request.Meta
#获取自定义标题
#验证自定义标题
#继续分析帖子数据

#设置响应
content = {
'response':'response',
}

返回响应(内容)

我正在尝试根据request.Meta元素找到我的自定义标题,但是当我打印请求.Meta,我得到一个500错误。如果我打印request.data,我会得到预期的响应。



¿使用django rest框架在我的帖子请求上获取自定义标题的方式是什么? >

解决方案

请求的元数据属性的名称大写:

 打印请求.META 

您的标题将作为:

  request.META ['HTTP_X_MYHEADER'] 

或者:

  request.META.get('HTTP_X_MYHEADER')#return`没有`如果没有这样的头

从文档中引用


请求中的HTTP标头通过将所有字符转换为大写字符来转换为 META 键,用下划线替换任何连字符,并添加 HTTP _ 前缀到名称。因此,例如,名为 X-Bender 的标题将映射到 META HTTP_X_BENDER



I'm sending a post request to my API made using django rest framework:

curl --header "X-MyHeader: 123" --data "test=test" http://127.0.0.1:8000/api/update_log/

In my rest framework view, I want to get my costum header, and if the custom header satisfies a condition, I will proceed to analyze my post data.

Ok, my view looks like:

class PostUpdateLogView(APIView):
throttle_classes = ()
permission_classes = ()
parser_classes = (
    parsers.FormParser,
    parsers.MultiPartParser,
    parsers.JSONParser,
)

renderer_classes = (renderers.JSONRenderer,)

def post(self, request):
    print request.Meta
    # Get custom header
    # Validate custom header
    # Proceed to analize post data

    # Make response
    content = {
        'response': 'response',
    }

    return Response(content)

I'm trying to find my custom header on request.Meta element, but when I print request.Meta, I get a 500 error. If I print request.data, I get the expected response.

¿What is the way to get a custom header on my post request using django rest framework?

解决方案

The name of the meta data attribute of request is in upper case:

print request.META

Your header will be available as:

request.META['HTTP_X_MYHEADER']

Or:

request.META.get('HTTP_X_MYHEADER') # return `None` if no such header

Quote from the documentation:

HTTP headers in the request are converted to META keys by converting all characters to uppercase, replacing any hyphens with underscores and adding an HTTP_ prefix to the name. So, for example, a header called X-Bender would be mapped to the META key HTTP_X_BENDER.

这篇关于使用django休息框架在post请求上获取自定义标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆