Theo tài liệu request.META
là một "từ điển Python tiêu chuẩn chứa tất cả các tiêu đề HTTP có sẵn". Nếu bạn muốn có được tất cả các tiêu đề, bạn có thể chỉ cần lặp qua từ điển.
Phần nào trong mã của bạn để thực hiện điều này phụ thuộc vào yêu cầu chính xác của bạn. Bất kỳ nơi nào có quyền truy cập request
nên làm.
Cập nhật
Tôi cần truy cập nó trong một lớp Middleware nhưng khi tôi lặp lại nó, tôi nhận được rất nhiều giá trị ngoài tiêu đề HTTP.
Từ tài liệu:
Ngoại trừ CONTENT_LENGTH
và CONTENT_TYPE
, như đã nêu ở trên, bất kỳ HTTP
tiêu đề nào trong yêu cầu đều được chuyển đổi thành META
khóa bằng cách chuyển đổi tất cả các ký tự thành chữ hoa, thay thế bất kỳ dấu gạch ngang nào bằng dấu gạch dưới và thêm HTTP_
tiền tố vào tên .
(Đã nhấn mạnh thêm)
Để chỉ lấy HTTP
tiêu đề, chỉ cần lọc theo các khóa có tiền tố HTTP_
.
Cập nhật 2
bạn có thể chỉ cho tôi cách tôi có thể xây dựng từ điển tiêu đề bằng cách lọc ra tất cả các khóa từ biến request.META bắt đầu bằng HTTP_ và loại bỏ phần HTTP_ đầu tiên.
Chắc chắn rồi. Đây là một cách để làm điều đó.
import re
regex = re.compile('^HTTP_')
dict((regex.sub('', header), value) for (header, value)
in request.META.items() if header.startswith('HTTP_'))