Я использую собственный HTTP-заголовок для сигнатуры URL, который называется "знак", как получить такое настраиваемое значение заголовка HTTP в Django?
Пользовательский заголовок HTTP в Django
Ответ 1
Продолжайте и используйте:
request.META.get('HTTP_{your uppercased header name}')
Обратите внимание, что в Django вы пишете имя заголовка заглавными буквами, а не черточками, но в запросе на клиенте вы должны писать его, используя черты вместо подчеркиваний (рабочие веб-серверы удаляют пользовательские заголовки с подчеркиваниями в целях безопасности).
Итак, пользовательский заголовок My-Custom-Header
доступен request.META['HTTP_MY_CUSTOM_HEADER']
Ответ 2
Наконец, я нашел, как это сделать через
request.META('HTTP_{your uppercased header name}')
Ответ 3
Вы можете добавить свои собственные заголовки в ответ так: https://docs.djangoproject.com/en/dev/ref/request-response/#setting-headers
>>> response = HttpResponse()
>>> response['Cache-Control'] = 'no-cache'
>>> del response['Cache-Control']
Или используйте декоратор, чтобы добавить их в представление: http://djangosnippets.org/snippets/275/
Ответ 4
Я пытался получить доступ к заголовку с приведенными выше ответами, используя этот код:
request.META.get('HTTP_{your uppercased header name}')
Но это не сработало для меня, и тогда я понял, что пользовательский заголовок не должен содержать underscore
, поэтому я изменил underscore
на dash
и бума, все началось. Надеюсь, это поможет людям, как я.: -)
Ответ 5
Из документации Django:
https://docs.djangoproject.com/en/2.1/ref/request-response/#django.http.HttpRequest.META
За исключением CONTENT_LENGTH и CONTENT_TYPE, как указано выше, любые заголовки HTTP в запросе преобразуются в ключи META путем преобразования всех символов в верхний регистр, замены любых дефисов подчеркиванием и добавления префикса HTTP_ к имени. Так, например, заголовок с именем X-Bender будет сопоставлен с ключом META HTTP_X_BENDER.
Ответ 6
Начиная с Django 2.2, вы можете использовать словарь HttpRequest.headers
, который обеспечивает регистр символов без учета регистра, например:
my_header = request.headers.get('x-my-custom-header')