我正在向使用Django睡觉框架的接口发送POST请求:

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

在我的睡觉框架视图中,我希望获得我的客户标头,如果自定义标头满足某个条件,我将继续分析我的帖子数据.

好吧,我的观点是:

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)

我正在按要求查找我的自定义标题.元元素,但当我打印请求时.梅塔,我有500个错误.如果我打印请求.数据,我得到了预期的回应.

?使用django rest框架在我的post请求中获取自定义标题的方法是什么?

推荐答案

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

print request.META

如果您的标题名为"My-Header",您的标题将为:

request.META['HTTP_MY_HEADER']

或者:

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

Quote from the documentation:

通过将所有字符转换为大写,将所有连字符替换为下划线,并在名称中添加HTTP_前缀,请求中的HTTP标头将转换为META个键.因此,例如,名为X-Bender的报头将被映射到METAHTTP_X_BENDER.

Django相关问答推荐

django命令中的no_color不起作用

为特定表行更新或创建

如何访问 django 模板中的字典值?

如何使用邮箱确认码创建django注册

在Django测试get方法中获取HttpResponseNotFound

Django REST Framework 图片上传

如何将表单中的用户字段设置为当前登录的用户?

使用 south 重构具有继承的 Django 模型

Django rest框架覆盖ViewSet中的page_size

何时在 django 中使用 pre_save、save、post_save?

Django JSONField 过滤

在 Django CharFields 中自动截断 max_length 字段

Django SMTPAuthenticationError

超过 1 个外键

django 模板中对象的模型名称

整数的Python正则表达式?

在 docker 容器中创建 django 超级用户而不输入密码

如何使用查询参数构造 Django 反向/url?

Django中reverse()和reverse_lazy()的区别

django rest 框架:从序列化程序 validate() 方法设置字段级错误