Hướng dẫn post value of file in dict python - giá trị bài đăng của tệp trong dict python

Đọc tệp, lặp lại trên các dòng, chia từng dòng theo không gian. Khóa sẽ là mục có 0 chỉ mục, giá trị - danh sách các mục có chỉ mục 1 trở lên:

Show
data = {}
with open('test.txt', 'r') as f:
    for line in f:
        line_data = line.split()
        data[line_data[0]] = line_data[1:]

print data

prints:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}

Ngoài ra, nếu bạn muốn số làm số nguyên:

data[line_data[0]] = map(int, line_data[1:])

Hy vọng điều đó sẽ giúp.

Mô -đun yêu cầu


Thí dụ

Thực hiện yêu cầu bài đăng đến một trang web và trả về văn bản phản hồi:

Nhập yêu cầu

url = 'https://www.w3schools.com/python/demopage.php' myObj = {'someKey': 'somervalue'}
myobj = {'somekey': 'somevalue'}

x = requests.post (url, json = myobj)

in (x.text)

Chạy ví dụ »


Định nghĩa và cách sử dụng

Phương thức

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
4 gửi yêu cầu POST đến URL được chỉ định.

Phương thức

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
4 được sử dụng khi bạn muốn gửi một số dữ liệu đến máy chủ.


Cú pháp

requests.post (url, data = {key: value}, json = {key: value}, args)

Args có nghĩa là 0 hoặc nhiều hơn các đối số được đặt tên trong bảng tham số bên dưới. Thí dụ:

Yêu cầu.


Giá trị tham số

Tham sốSự mô tả
URLThử nóYêu cầu. URL của yêu cầu
dữ liệuThử nóYêu cầu. URL của yêu cầu
dữ liệuThử nóYêu cầu. URL của yêu cầu
dữ liệuThử nóYêu cầu. URL của yêu cầu
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
6 (allowing redirects)
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
7
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
7
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
7
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
7
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
7
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
2
dữ liệuThử nóYêu cầu. URL của yêu cầu
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
7 which means the request will continue until the connection is closed
dữ liệuKhông bắt buộc. Một từ điển, danh sách các bộ dữ liệu, byte hoặc một đối tượng tệp để gửi đến URL được chỉ định
Try it
json
Default
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
6

Không bắt buộc. Một đối tượng JSON để gửi đến URL được chỉ định

các tập tin


Mô -đun yêu cầu


Đối tượng yêu cầu và phản hồi

Tổng quan nhanh

Django sử dụng các đối tượng yêu cầu và phản hồi để truyền trạng thái thông qua hệ thống.

Khi một trang được yêu cầu, Django tạo một đối tượng

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5 có chứa siêu dữ liệu về yêu cầu. Sau đó, Django tải chế độ xem thích hợp, chuyển
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5 làm đối số đầu tiên cho hàm xem. Mỗi chế độ xem chịu trách nhiệm trả về một đối tượng
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7.

Tài liệu này giải thích các API cho các đối tượng

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5 và
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7, được xác định trong mô -đun
{{ request.headers.user_agent }}
0.

>>> request.headers {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...} >>> 'User-Agent' in request.headers True >>> 'user-agent' in request.headers True >>> request.headers['User-Agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers['user-agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('User-Agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('user-agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) 5 Đối tượng

Lớp ________ 45¶
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

Thuộc tính¶

________ 577 ________ 568¶

Một trình lặp của nội dung phản hồi, bytestring được mã hóa theo
{{ request.headers.user_agent }}
79.

________ 577 ________ 385¶

________ 53 ________ 58¶

Cơ quan yêu cầu HTTP thô là một bytestring. Điều này rất hữu ích cho việc xử lý dữ liệu theo các cách khác với các hình thức HTML thông thường: hình ảnh nhị phân, tải trọng XML, v.v. Để xử lý dữ liệu biểu mẫu thông thường, sử dụng

{{ request.headers.user_agent }}
9.

Bạn cũng có thể đọc từ

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5 bằng giao diện giống như tệp với
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
1 hoặc
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
2. Truy cập thuộc tính
{{ request.headers.user_agent }}
8 sau khi đọc yêu cầu bằng một trong hai phương thức luồng I/O này sẽ tạo ra
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
4.

________ 53 ________ 66¶

Một chuỗi đại diện cho đường dẫn đầy đủ đến trang được yêu cầu, không bao gồm sơ đồ, miền hoặc chuỗi truy vấn.

Ví dụ:

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
7

________ 53 ________ 69¶

Trong một số cấu hình máy chủ web, phần của URL sau khi tên máy chủ được chia thành phần tiền tố tập lệnh và phần thông tin đường dẫn. Thuộc tính

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
9 luôn chứa phần thông tin đường dẫn của đường dẫn, bất kể máy chủ web nào đang được sử dụng. Sử dụng điều này thay vì
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6 có thể làm cho mã của bạn dễ dàng di chuyển giữa các máy chủ thử nghiệm và triển khai.

Ví dụ: nếu

class MultipleProxyMiddleware:
    FORWARDED_FOR_FIELDS = [
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED_HOST',
        'HTTP_X_FORWARDED_SERVER',
    ]

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        """
        Rewrites the proxy headers so that only the most
        recent proxy is used.
        """
        for field in self.FORWARDED_FOR_FIELDS:
            if field in request.META:
                if ',' in request.META[field]:
                    parts = request.META[field].split(',')
                    request.META[field] = parts[-1].strip()
        return self.get_response(request)
2 cho ứng dụng của bạn được đặt thành
class MultipleProxyMiddleware:
    FORWARDED_FOR_FIELDS = [
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED_HOST',
        'HTTP_X_FORWARDED_SERVER',
    ]

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        """
        Rewrites the proxy headers so that only the most
        recent proxy is used.
        """
        for field in self.FORWARDED_FOR_FIELDS:
            if field in request.META:
                if ',' in request.META[field]:
                    parts = request.META[field].split(',')
                    request.META[field] = parts[-1].strip()
        return self.get_response(request)
3, thì
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6 có thể là
class MultipleProxyMiddleware:
    FORWARDED_FOR_FIELDS = [
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED_HOST',
        'HTTP_X_FORWARDED_SERVER',
    ]

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        """
        Rewrites the proxy headers so that only the most
        recent proxy is used.
        """
        for field in self.FORWARDED_FOR_FIELDS:
            if field in request.META:
                if ',' in request.META[field]:
                    parts = request.META[field].split(',')
                    request.META[field] = parts[-1].strip()
        return self.get_response(request)
5 và
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
9 sẽ là
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
7.

________ 53 ________ 79¶

Một chuỗi đại diện cho phương thức HTTP được sử dụng trong yêu cầu. Điều này được đảm bảo là chữ hoa. Ví dụ:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()

________ 53 ________ 81¶

Một chuỗi đại diện cho mã hóa hiện tại được sử dụng để giải mã dữ liệu gửi biểu mẫu (hoặc

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
2, có nghĩa là cài đặt
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
3 được sử dụng). Bạn có thể ghi vào thuộc tính này để thay đổi mã hóa được sử dụng khi truy cập dữ liệu biểu mẫu. Bất kỳ quyền truy cập thuộc tính tiếp theo nào (chẳng hạn như đọc từ
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
4 hoặc
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
5) sẽ sử dụng giá trị
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
1 mới. Hữu ích nếu bạn biết dữ liệu biểu mẫu không có trong mã hóa
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
3.

________ 53 ________ 89¶

Một chuỗi đại diện cho loại MIME của yêu cầu, được phân tích cú pháp từ tiêu đề

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
0.

________ 53 ________ 92¶

Một từ điển của các tham số khóa/giá trị có trong tiêu đề

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
0.

________ 53 ________ 84¶

Một đối tượng giống như từ điển chứa tất cả các tham số HTTP đã cho. Xem tài liệu

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 dưới đây.

________ 53 ________ 85¶

Một đối tượng giống như từ điển chứa tất cả các tham số bài HTTP đã cho, với điều kiện yêu cầu chứa dữ liệu biểu mẫu. Xem tài liệu

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 dưới đây. Nếu bạn cần truy cập dữ liệu RAW hoặc không dạng được đăng trong yêu cầu, thay vào đó, hãy truy cập vào thuộc tính
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
00.

Nó có thể là một yêu cầu có thể đến qua bài viết với từ điển

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
5 trống - nếu, giả sử, một biểu mẫu được yêu cầu thông qua phương thức POST HTTP nhưng không bao gồm dữ liệu biểu mẫu. Do đó, bạn không nên sử dụng
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
02 để kiểm tra sử dụng phương thức POST; Thay vào đó, hãy sử dụng
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
03 (xem
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
04).

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
5 không bao gồm thông tin tải trọng tệp. Xem
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
06.

________ 53 ________ 108¶

Một từ điển chứa tất cả các cookie. Chìa khóa và giá trị là chuỗi.

________ 53 ________ 106¶

Một đối tượng giống như từ điển chứa tất cả các tệp được tải lên. Mỗi khóa trong

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
06 là
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
12 từ
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
13. Mỗi giá trị trong
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
06 là
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
15.

Xem Quản lý tệp để biết thêm thông tin.Managing files for more information.

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
06 sẽ chỉ chứa dữ liệu nếu phương thức yêu cầu được đăng và
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
17 được đăng lên yêu cầu có
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
18. Nếu không,
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
06 sẽ là một đối tượng giống như từ điển trống.

________ 53 ________ 121¶

Một từ điển chứa tất cả các tiêu đề HTTP có sẵn. Các tiêu đề có sẵn phụ thuộc vào máy khách và máy chủ, nhưng đây là một số ví dụ:

  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    22 - Độ dài của thân yêu cầu (dưới dạng chuỗi).
  • >>> request.get_signed_cookie('name')
    'Tony'
    >>> request.get_signed_cookie('name', salt='name-salt')
    'Tony' # assuming cookie was set using the same salt
    >>> request.get_signed_cookie('nonexistent-cookie')
    ...
    KeyError: 'nonexistent-cookie'
    >>> request.get_signed_cookie('nonexistent-cookie', False)
    False
    >>> request.get_signed_cookie('cookie-that-was-tampered-with')
    ...
    BadSignature: ...
    >>> request.get_signed_cookie('name', max_age=60)
    ...
    SignatureExpired: Signature age 1677.3839159 > 60 seconds
    >>> request.get_signed_cookie('name', False, max_age=60)
    False
    
    0 - Loại MIME của thân yêu cầu.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    24 - Các loại nội dung chấp nhận được cho phản hồi.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    25 - Mã hóa chấp nhận được cho phản hồi.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    26 - Ngôn ngữ chấp nhận được cho phản hồi.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    27 - Tiêu đề máy chủ HTTP được gửi bởi máy khách.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    28 - Trang giới thiệu, nếu có.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    29-Chuỗi tác nhân người dùng của máy khách.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    30 - Chuỗi truy vấn, như một chuỗi duy nhất (không phân biệt).
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    31 - Địa chỉ IP của máy khách.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    32 - Tên máy chủ của máy khách.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    33 - Người dùng được xác thực bởi máy chủ web, nếu có.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    34 - Một chuỗi như
    {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    35 hoặc
    {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    36.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    37 - Tên máy chủ của máy chủ.
  • {'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
     'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
    
    38 - Cổng của máy chủ (dưới dạng chuỗi).

Ngoại trừ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
22 và
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
0, như đã nêu ở trên, bất kỳ tiêu đề HTTP nào trong yêu cầu đều được chuyển đổi thành các phím
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
21 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 nối nào bằng dấu gạch dưới và thêm tiền tố
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
42 thành tên. Vì vậy, ví dụ, một tiêu đề gọi là
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
43 sẽ được ánh xạ tới khóa
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
21
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
45.

Lưu ý rằng

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
46 dải tất cả các tiêu đề có dấu gạch dưới tên, vì vậy bạn đã giành chiến thắng khi thấy chúng trong
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
21. Điều này ngăn chặn giả mạo tiêu đề dựa trên sự mơ hồ giữa các dấu gạch dưới và dấu gạch ngang đều được bình thường hóa để nhấn mạnh trong các biến môi trường WSGI. Nó phù hợp với hành vi của các máy chủ web như Nginx và Apache 2.4+.

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
48 là một cách đơn giản hơn để truy cập tất cả các tiêu đề HTTP-Prefixed, cộng với
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
22 và
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
0.

________ 53 ________ 152¶

Một trường hợp không nhạy cảm, đối tượng giống như Dict, cung cấp quyền truy cập vào tất cả các tiêu đề HTTP-Prefixed (cộng với

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
53 và
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
54) từ yêu cầu.

Tên của mỗi tiêu đề được cách điệu với thẻ tiêu đề (ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
55) khi nó hiển thị. Bạn có thể truy cập tiêu đề Case-Incalitial:

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

Ví dụ, để sử dụng, các mẫu Django, các tiêu đề cũng có thể được tra cứu bằng cách sử dụng dấu gạch dưới thay cho dấu gạch nối:

{{ request.headers.user_agent }}

________ 53 ________ 157¶

Một ví dụ của

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
58 đại diện cho URL được giải quyết. Thuộc tính này chỉ được đặt sau khi giải quyết URL diễn ra, điều đó có nghĩa là nó có sẵn trong tất cả các chế độ xem nhưng không phải trong phần mềm trung gian được thực hiện trước khi giải quyết URL diễn ra (mặc dù bạn có thể sử dụng nó trong
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
59).

Các thuộc tính được đặt bởi Middleware¶

Một số phần mềm trung gian có trong các ứng dụng đóng góp của Django, đặt các thuộc tính trên yêu cầu. Nếu bạn không thấy thuộc tính trên một yêu cầu, hãy chắc chắn rằng lớp phần mềm trung gian thích hợp được liệt kê trong

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
60.

________ 53 ________ 162¶

Từ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
63: Một đối tượng giống như từ điển có thể đọc và có thể ghi, thể hiện phiên hiện tại.

________ 53 ________ 165¶

Từ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
66: một ví dụ
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
67 hoặc
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
68 được trả về bởi
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
69 đại diện cho trang web hiện tại.

________ 53 ________ 171¶

Từ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
72: một thể hiện của
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
73 đại diện cho người dùng hiện đang đăng nhập. Nếu người dùng hiện đang đăng nhập,
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
71 sẽ được đặt thành một thể hiện là
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
75. Bạn có thể nói với họ với
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
76, như vậy:

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.

Phương pháp bình

________ 53 ________ 178 ()

Trả về máy chủ gốc của yêu cầu bằng cách sử dụng thông tin từ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
79 (nếu
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
80 được bật) và các tiêu đề
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
27, theo thứ tự đó. Nếu họ không cung cấp giá trị, phương pháp này sử dụng kết hợp
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
37 và
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
38 như chi tiết trong PEP 3333.PEP 3333.

Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
84

Tăng

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
85 Nếu máy chủ không có trong
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
86 hoặc tên miền không hợp lệ theo RFC 1034/1035.RFC 1034/1035.

Ghi chú

Phương pháp

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
87 không thành công khi máy chủ đứng sau nhiều proxy. Một giải pháp là sử dụng phần mềm trung gian để viết lại các tiêu đề proxy, như trong ví dụ sau:

class MultipleProxyMiddleware:
    FORWARDED_FOR_FIELDS = [
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED_HOST',
        'HTTP_X_FORWARDED_SERVER',
    ]

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        """
        Rewrites the proxy headers so that only the most
        recent proxy is used.
        """
        for field in self.FORWARDED_FOR_FIELDS:
            if field in request.META:
                if ',' in request.META[field]:
                    parts = request.META[field].split(',')
                    request.META[field] = parts[-1].strip()
        return self.get_response(request)

Phần mềm trung gian này nên được định vị trước bất kỳ phần mềm trung gian nào khác dựa vào giá trị của

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
87 - ví dụ,
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
89 hoặc
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
90.

________ 53 ________ 192 ()

Trả về cổng gốc của yêu cầu bằng cách sử dụng thông tin từ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
93 (nếu
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
94 được bật) và các biến
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
38
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
21, theo thứ tự đó.

________ 53 ________ 198 ()

Trả về

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6, cộng với một chuỗi truy vấn được thêm vào, nếu có.

Ví dụ:

data[line_data[0]] = map(int, line_data[1:])
00

________ 53 ________ 202 ()

Giống như

data[line_data[0]] = map(int, line_data[1:])
03, nhưng sử dụng
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
9 thay vì
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6.

Ví dụ:

data[line_data[0]] = map(int, line_data[1:])
06

________ 53 ________ 208 (Vị trí = Không) ¶location=None

Trả về dạng URI tuyệt đối của

data[line_data[0]] = map(int, line_data[1:])
09. Nếu không có vị trí nào được cung cấp, vị trí sẽ được đặt thành
data[line_data[0]] = map(int, line_data[1:])
10.

Nếu vị trí đã là một URI tuyệt đối, nó sẽ không bị thay đổi. Nếu không, URI tuyệt đối được xây dựng bằng các biến máy chủ có sẵn trong yêu cầu này. Ví dụ:

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'

Ghi chú

Phương pháp

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
87 không thành công khi máy chủ đứng sau nhiều proxy. Một giải pháp là sử dụng phần mềm trung gian để viết lại các tiêu đề proxy, như trong ví dụ sau:

Phần mềm trung gian này nên được định vị trước bất kỳ phần mềm trung gian nào khác dựa vào giá trị của
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
87 - ví dụ,
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
89 hoặc
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
90.key, default=RAISE_ERROR, salt='', max_age=None

________ 53 ________ 192 ()

Trả về cổng gốc của yêu cầu bằng cách sử dụng thông tin từ

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
93 (nếu
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
94 được bật) và các biến
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
38
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
21, theo thứ tự đó.

________ 53 ________ 198 ()

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False

Trả về

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6, cộng với một chuỗi truy vấn được thêm vào, nếu có.cryptographic signing for more information.

Ví dụ:
data[line_data[0]] = map(int, line_data[1:])
00

________ 53 ________ 202 ()

Giống như
data[line_data[0]] = map(int, line_data[1:])
03, nhưng sử dụng
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
9 thay vì
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6.mime_type

Ví dụ:

data[line_data[0]] = map(int, line_data[1:])
06

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
0

________ 53 ________ 208 (Vị trí = Không) ¶Content negotiation example of using

data[line_data[0]] = map(int, line_data[1:])
30 to return different content to API consumers.

Nếu một phản hồi khác nhau tùy thuộc vào nội dung của tiêu đề

data[line_data[0]] = map(int, line_data[1:])
25 và bạn đang sử dụng một số hình thức lưu trữ như Django tựa
data[line_data[0]] = map(int, line_data[1:])
32, bạn nên trang trí chế độ xem với
data[line_data[0]] = map(int, line_data[1:])
33 để các phản hồi được lưu trong bộ nhớ cache đúng.

________ 53 ________ 235 (size = none) ____ ____ 53 ________ 237 ()size=None
{{ request.headers.user_agent }}
3
data[line_data[0]] = map(int, line_data[1:])
37()¶
{{ request.headers.user_agent }}
3
data[line_data[0]] = map(int, line_data[1:])
39()¶
{{ request.headers.user_agent }}
3
data[line_data[0]] = map(int, line_data[1:])
41()¶

Các phương thức thực hiện một giao diện giống như tệp để đọc từ một ví dụ

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5. Điều này làm cho nó có thể tiêu thụ một yêu cầu đến theo kiểu phát trực tuyến. Một trường hợp sử dụng phổ biến sẽ là xử lý tải trọng XML lớn với trình phân tích cú pháp lặp mà không xây dựng toàn bộ cây XML trong bộ nhớ.

Với giao diện tiêu chuẩn này, một thể hiện

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5 có thể được chuyển trực tiếp cho trình phân tích cú pháp XML như
data[line_data[0]] = map(int, line_data[1:])
44:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
1

Lớp ________ 96¶
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False

Trong một đối tượng

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5, các thuộc tính
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
4 và
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
5 là các trường hợp của
data[line_data[0]] = map(int, line_data[1:])
50, một lớp giống như từ điển được tùy chỉnh để xử lý nhiều giá trị cho cùng một khóa. Điều này là cần thiết bởi vì một số yếu tố hình thức HTML, đáng chú ý là
data[line_data[0]] = map(int, line_data[1:])
51, truyền nhiều giá trị cho cùng một khóa.

Các ____996 tại

data[line_data[0]] = map(int, line_data[1:])
53 và
data[line_data[0]] = map(int, line_data[1:])
54 sẽ là bất biến khi được truy cập trong chu kỳ yêu cầu/phản hồi bình thường. Để có được một phiên bản có thể thay đổi, bạn cần sử dụng
data[line_data[0]] = map(int, line_data[1:])
55.

Phương pháp bình

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 thực hiện tất cả các phương pháp từ điển tiêu chuẩn bởi vì nó là một lớp con của từ điển. Các trường hợp ngoại lệ được nêu ở đây:

________ 257 ________ 258 (query_String = none, mutable = false, mã hóa = không) ¶query_string=None, mutable=False, encoding=None

Khởi tạo một đối tượng

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 dựa trên
data[line_data[0]] = map(int, line_data[1:])
60.

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
2

Nếu

data[line_data[0]] = map(int, line_data[1:])
60 không được truyền vào, kết quả
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 sẽ trống (nó sẽ không có khóa hoặc giá trị).

Hầu hết các

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 bạn gặp phải, và đặc biệt là những người ở
data[line_data[0]] = map(int, line_data[1:])
53 và
data[line_data[0]] = map(int, line_data[1:])
54, sẽ là bất biến. Nếu bạn đang tự khởi tạo một người, bạn có thể biến nó có thể thay đổi bằng cách chuyển
data[line_data[0]] = map(int, line_data[1:])
66 cho
data[line_data[0]] = map(int, line_data[1:])
67 của nó.

Các chuỗi để cài đặt cả khóa và giá trị sẽ được chuyển đổi từ

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
1 thành
data[line_data[0]] = map(int, line_data[1:])
69. Nếu
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
1 không được đặt, nó mặc định là
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
3.

classMethod ________ 257 ________ 273 (itable, value = '', mutable = false, expoding = none) ¶
data[line_data[0]] = map(int, line_data[1:])
57
data[line_data[0]] = map(int, line_data[1:])
73(iterable, value='', mutable=False, encoding=None

Tạo một

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 mới với các khóa từ
data[line_data[0]] = map(int, line_data[1:])
75 và mỗi giá trị bằng
data[line_data[0]] = map(int, line_data[1:])
76. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
3

________ 257 ________ 278 (khóa)key

Trả về giá trị cho khóa đã cho. Nếu khóa có nhiều hơn một giá trị, nó sẽ trả về giá trị cuối cùng. Tăng

data[line_data[0]] = map(int, line_data[1:])
79 nếu khóa không tồn tại. .

________ 257 ________ 283 (khóa, giá trị) ¶key, value

Đặt khóa đã cho thành

data[line_data[0]] = map(int, line_data[1:])
84 (một danh sách có phần tử duy nhất là
data[line_data[0]] = map(int, line_data[1:])
76). Lưu ý rằng điều này, vì các chức năng từ điển khác có tác dụng phụ, chỉ có thể được gọi trên
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 có thể thay đổi (chẳng hạn như một chức năng được tạo ra thông qua
data[line_data[0]] = map(int, line_data[1:])
55).

________ 257 ________ 289 (khóa)key

Trả về

data[line_data[0]] = map(int, line_data[1:])
21 nếu khóa đã cho được đặt. Điều này cho phép bạn làm, ví dụ,
data[line_data[0]] = map(int, line_data[1:])
91.

________ 257 ________ 293 (khóa, mặc định = Không) ¶key, default=None

Sử dụng logic tương tự như

data[line_data[0]] = map(int, line_data[1:])
94, với một cái móc để trả về giá trị mặc định nếu khóa không tồn tại.

________ 257 ________ 296 (khóa, mặc định = Không) ¶key, default=None

Giống như

data[line_data[0]] = map(int, line_data[1:])
97, ngoại trừ nó sử dụng
data[line_data[0]] = map(int, line_data[1:])
98 trong nội bộ.

________ 257 ________ 300 (other_dict) ¶other_dict

Mất một

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 hoặc một từ điển. Giống như
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
02, ngoại trừ nó nối vào các mục từ điển hiện tại thay vì thay thế chúng. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
4

________ 257 ________ 304 ()

Giống như

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
05, ngoại trừ điều này sử dụng cùng một logic giá trị cuối cùng như
data[line_data[0]] = map(int, line_data[1:])
94 và trả về một đối tượng iterator thay vì đối tượng xem. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
5

________ 257 ________ 308 ()

Giống như

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
09, ngoại trừ điều này sử dụng cùng một logic giá trị cuối cùng như
data[line_data[0]] = map(int, line_data[1:])
94 và trả về một trình lặp thay vì đối tượng xem. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
6

Ngoài ra,

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6 có các phương pháp sau:

________ 257 ________ 313 ()

Trả về một bản sao của đối tượng bằng

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
14. Bản sao này sẽ có thể thay đổi ngay cả khi bản gốc không.

________ 257 ________ 316 (khóa, mặc định = Không) ¶key, default=None

Trả về một danh sách dữ liệu với khóa được yêu cầu. Trả về một danh sách trống nếu khóa không tồn tại và

data[line_data[0]] = map(int, line_data[1:])
15 là
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
2. Nó đảm bảo trả lại một danh sách trừ khi giá trị mặc định được cung cấp không phải là một danh sách.

________ 257 ________ 320 (khóa, list_) ¶key, list_

Đặt khóa đã cho thành

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
21 (không giống như
data[line_data[0]] = map(int, line_data[1:])
98).

________ 257 ________ 324 (khóa, mục) ¶key, item

Lối nhiều mục vào danh sách nội bộ được liên kết với khóa.

________ 257 ________ 326 (khóa, default_list = none) ¶key, default_list=None

Giống như

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
27, ngoại trừ nó lấy một danh sách các giá trị thay vì một giá trị duy nhất.

________ 257 ________ 329 ()

Giống như

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
30, ngoại trừ nó bao gồm tất cả các giá trị, như một danh sách, cho mỗi thành viên của từ điển. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
7

________ 257 ________ 332 (khóa) ¶key

Trả về một danh sách các giá trị cho khóa đã cho và loại bỏ chúng khỏi từ điển. Tăng

data[line_data[0]] = map(int, line_data[1:])
80 nếu khóa không tồn tại. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
8

________ 257 ________ 335 ()

Xóa một thành viên tùy ý của từ điển (vì không có khái niệm đặt hàng) và trả về một bộ ba giá trị chứa khóa và danh sách tất cả các giá trị cho khóa. Tăng

data[line_data[0]] = map(int, line_data[1:])
80 khi được gọi trên một từ điển trống. Ví dụ:

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
9

________ 257 ________ 338 ()

Trả về một đại diện

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38 của
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6. Đối với mỗi cặp (danh sách, danh sách) trong
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False
6,
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38 sẽ có (khóa, mục), trong đó mục là một yếu tố của danh sách, sử dụng cùng logic như
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
43:

data[line_data[0]] = map(int, line_data[1:])
0

________ 257 ________ 345 (an toàn = không) ¶safe=None

Trả về một chuỗi dữ liệu trong định dạng chuỗi truy vấn. Ví dụ:

data[line_data[0]] = map(int, line_data[1:])
1

Sử dụng tham số

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
46 để truyền các ký tự mà don don yêu cầu mã hóa. Ví dụ:

data[line_data[0]] = map(int, line_data[1:])
2

>>> request.headers {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...} >>> 'User-Agent' in request.headers True >>> 'user-agent' in request.headers True >>> request.headers['User-Agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers['user-agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('User-Agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('user-agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) 7 Đối tượng

Lớp ________ 47¶
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

Trái ngược với các đối tượng

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
5, được tạo tự động bởi Django, các đối tượng
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là trách nhiệm của bạn. Mỗi chế độ xem bạn viết là chịu trách nhiệm cho việc khởi tạo, điền kinh và trả lại một
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7.

Lớp

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 sống trong mô -đun
{{ request.headers.user_agent }}
0.

Cách sử dụng¶

Vượt qua chuỗi

Cách sử dụng điển hình là chuyển nội dung của trang, như một chuỗi, bytestring hoặc

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
54, cho hàm tạo
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7:

data[line_data[0]] = map(int, line_data[1:])
3

Nhưng nếu bạn muốn thêm nội dung tăng dần, bạn có thể sử dụng

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
56 làm đối tượng giống như tệp:

data[line_data[0]] = map(int, line_data[1:])
4

Vượt qua tererators¶

Cuối cùng, bạn có thể vượt qua

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 một trình lặp hơn là chuỗi.
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 sẽ tiêu thụ trình lặp ngay lập tức, lưu trữ nội dung của nó dưới dạng chuỗi và loại bỏ nó. Các đối tượng có phương thức
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
59 như tệp và trình tạo ngay lập tức được đóng.

Nếu bạn cần phản hồi được truyền phát từ trình lặp lại cho máy khách, bạn phải sử dụng lớp

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60 thay thế.

Đặt trường tiêu đề

Để đặt hoặc xóa trường tiêu đề trong phản hồi của bạn, hãy sử dụng

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
61:

data[line_data[0]] = map(int, line_data[1:])
5

Bạn cũng có thể thao tác các tiêu đề bằng cách coi phản hồi của bạn như một từ điển:

data[line_data[0]] = map(int, line_data[1:])
6

Điều này proxy cho

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
61 và là giao diện ban đầu được cung cấp bởi
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7.

Khi sử dụng giao diện này, không giống như từ điển,

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
64 không tăng
data[line_data[0]] = map(int, line_data[1:])
80 nếu trường tiêu đề không tồn tại.

Bạn cũng có thể đặt tiêu đề khi khởi tạo:

data[line_data[0]] = map(int, line_data[1:])
7

Để thiết lập các trường tiêu đề

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
66 và
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
67, nên sử dụng các phương thức
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
68 và
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
69 từ
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
70, vì các trường này có thể có nhiều giá trị được phân tách bằng dấu phẩy. Các phương thức vá lỗi của người Viking đảm bảo rằng các giá trị khác, ví dụ: Được thêm bởi một phần mềm trung gian, không được xóa.

Các trường tiêu đề HTTP không thể chứa các dòng mới. Một nỗ lực để đặt trường tiêu đề chứa ký tự mới (CR hoặc LF) sẽ tăng

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
71

Nói với trình duyệt coi phản hồi như một tệp đính kèm tệp

Để nói với trình duyệt coi phản hồi là tệp đính kèm tệp, hãy đặt các tiêu đề

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
54 và
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
73. Ví dụ: đây là cách bạn có thể trả về bảng tính Microsoft Excel:

data[line_data[0]] = map(int, line_data[1:])
8

Không có gì đặc trưng của Django về tiêu đề ____373, nhưng nó dễ dàng quên cú pháp, vì vậy chúng tôi đã đưa nó vào đây.

Thuộc tính¶

________ 375 ________ 376¶

Một bytestring đại diện cho nội dung, được mã hóa từ một chuỗi nếu cần thiết.

________ 375 ________ 152¶

Một trường hợp không nhạy cảm, đối tượng giống như Dict, cung cấp một giao diện cho tất cả các tiêu đề HTTP trên phản hồi. Xem cài đặt các trường tiêu đề.Setting header fields.

________ 375 ________ 380¶

Một chuỗi biểu thị phần ký tự trong đó phản hồi sẽ được mã hóa. Nếu không được đưa ra tại thời gian khởi tạo

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7, nó sẽ được trích xuất từ ​​
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
9 và nếu điều đó không thành công, cài đặt
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
3 sẽ được sử dụng.

________ 375 ________ 385¶

Mã trạng thái HTTP cho phản hồi.HTTP status code for the response.

Trừ khi

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
86 được thiết lập rõ ràng, việc sửa đổi giá trị của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
85 bên ngoài hàm tạo cũng sẽ sửa đổi giá trị của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
86.

________ 375 ________ 386¶

Cụm lý do HTTP cho phản hồi. Nó sử dụng các cụm từ lý do mặc định tiêu chuẩn HTTP.HTTP standard’s default reason phrases.

Trừ khi được thiết lập rõ ràng,

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
86 được xác định bởi giá trị của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
85.

________ 375 ________ 394¶

Đây luôn là

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95.

Thuộc tính này tồn tại để phần mềm trung gian có thể xử lý các phản hồi phát trực tuyến khác với các phản hồi thông thường.

________ 375 ________ 397¶

data[line_data[0]] = map(int, line_data[1:])
21 nếu phản hồi đã được đóng lại.

Phương pháp bình

Acontent=b'', content_type=None, status=200, reason=None, charset=None, headers=None

Khởi tạo một đối tượng

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 với nội dung trang đã cho, loại nội dung và tiêu đề.

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
76 phổ biến nhất là một trình lặp, bytestring,
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
54 hoặc chuỗi. Các loại khác sẽ được chuyển đổi thành bytestring bằng cách mã hóa biểu diễn chuỗi của chúng. Trình lặp nên trả về chuỗi hoặc bytestrings và chúng sẽ được kết hợp với nhau để tạo thành nội dung của phản hồi.

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
9 là loại MIME hoàn thành tùy chọn bởi mã hóa bộ ký tự và được sử dụng để điền vào tiêu đề HTTP
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
54. Nếu không được chỉ định, nó được hình thành bởi các cài đặt
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
06 và
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
3, theo mặc định:
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
08.

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
09 là mã trạng thái HTTP cho phản hồi. Bạn có thể sử dụng Python từ
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
10 cho các bí danh có ý nghĩa, chẳng hạn như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
11.HTTP status code for the response. You can use Python’s
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
10 for meaningful aliases, such as
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
11.

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
12 là cụm từ phản hồi HTTP. Nếu không được cung cấp, một cụm từ mặc định sẽ được sử dụng.

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
80 là ký tự trong đó phản hồi sẽ được mã hóa. Nếu không được đưa ra, nó sẽ được trích xuất từ ​​
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
9 và nếu điều đó không thành công, cài đặt
>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/')
'https://example.com/bands/'
>>> request.build_absolute_uri('https://example2.com/bands/')
'https://example2.com/bands/'
3 sẽ được sử dụng.

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
52 là
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38 của các tiêu đề HTTP cho phản hồi.

________ 375 ________ 283 (tiêu đề, giá trị) ¶header, value

Đặt tên tiêu đề đã cho thành giá trị đã cho. Cả

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
20 và
data[line_data[0]] = map(int, line_data[1:])
76 nên là chuỗi.

________ 375 ________ 423 (tiêu đề) ¶header

Xóa tiêu đề với tên đã cho. Thất bại trong âm thầm nếu tiêu đề không tồn tại. Trường hợp không nhạy cảm.

________ 375 ________ 278 (tiêu đề) ¶header

Trả về giá trị cho tên tiêu đề đã cho. Trường hợp không nhạy cảm.

________ 375 ________ 293 (tiêu đề, thay thế = không) ¶header, alternate=None

Trả về giá trị cho tiêu đề đã cho hoặc

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
28 nếu tiêu đề không tồn tại.

________ 375 ________ 430 (tiêu đề) ¶header

Trả về

data[line_data[0]] = map(int, line_data[1:])
21 hoặc
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95 dựa trên kiểm tra không nhạy cảm trường hợp cho một tiêu đề với tên đã cho.

________ 375 ________ 304 ()

Các hoạt động như

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
05 cho các tiêu đề HTTP trên phản hồi.

________ 375 ________ 296 (tiêu đề, giá trị) ¶header, value

Đặt tiêu đề trừ khi nó đã được đặt.

________ 375 ________ 439 (khóa, value = '', max_age = none, hết hạn = none, path = '/', domain = nonekey, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None

Đặt cookie. Các tham số giống như trong đối tượng cookie

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
40 trong thư viện tiêu chuẩn Python.

  • data[line_data[0]] = map(int, line_data[1:])
    
    17 phải là đối tượng
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    42, số nguyên của giây hoặc
    >>> request.build_absolute_uri()
    'https://example.com/music/bands/the_beatles/?print=true'
    >>> request.build_absolute_uri('/bands/')
    'https://example.com/bands/'
    >>> request.build_absolute_uri('https://example2.com/bands/')
    'https://example2.com/bands/'
    
    2 (mặc định) nếu cookie chỉ kéo dài miễn là phiên trình duyệt của máy khách. Nếu
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    44 không được chỉ định, nó sẽ được tính toán.

    Đã thay đổi trong Django 4.1:

    Hỗ trợ cho các đối tượng

    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    42 đã được thêm vào.

  • >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    44 nên là một chuỗi ở định dạng
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    47 hoặc đối tượng
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    48 trong UTC. Nếu
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    44 là đối tượng
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    50,
    data[line_data[0]] = map(int, line_data[1:])
    
    17 sẽ được tính toán.

  • Sử dụng

    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    52 Nếu bạn muốn đặt cookie từ miền chéo. Ví dụ:
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    53 sẽ đặt cookie có thể đọc được bởi các tên miền www.example.com, blog.example.com, v.v. Nếu không, một cookie sẽ chỉ có thể đọc được bởi tên miền đặt nó.

  • Sử dụng

    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    54 Nếu bạn muốn cookie chỉ được gửi đến máy chủ khi yêu cầu được thực hiện với sơ đồ
    {{ request.headers.user_agent }}
    
    6.

  • Sử dụng

    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    56 Nếu bạn muốn ngăn JavaScript phía máy khách có quyền truy cập vào cookie.

    HTTPonly là một lá cờ được bao gồm trong tiêu đề phản hồi HTTP của Set-Cookie. Nó là một phần của tiêu chuẩn RFC 6265 cho cookie và có thể là một cách hữu ích để giảm thiểu rủi ro của tập lệnh phía máy khách truy cập dữ liệu cookie được bảo vệ.RFC 6265 standard for cookies and can be a useful way to mitigate the risk of a client-side script accessing the protected cookie data.

  • Sử dụng

    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    57 hoặc
    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    58 để nói với trình duyệt không gửi cookie này khi thực hiện yêu cầu có nguồn gốc chéo. Samesite không được hỗ trợ bởi tất cả các trình duyệt, vì vậy, nó không phải là sự thay thế cho bảo vệ CSRF của Django, mà là một biện pháp phòng thủ sâu.

    Sử dụng

    >>> request.headers
    {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}
    
    >>> 'User-Agent' in request.headers
    True
    >>> 'user-agent' in request.headers
    True
    
    >>> request.headers['User-Agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers['user-agent']
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    >>> request.headers.get('User-Agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    >>> request.headers.get('user-agent')
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
    
    59 (Chuỗi) để nêu rõ rằng cookie này được gửi với tất cả các yêu cầu cùng trang web và chéo trang.

Cảnh báo

RFC 6265 nói rằng các đại lý người dùng nên hỗ trợ cookie ít nhất 4096 byte. Đối với nhiều trình duyệt, đây cũng là kích thước tối đa. Django sẽ không nêu ra một ngoại lệ nếu có một nỗ lực để lưu trữ một cookie hơn 4096 byte, nhưng nhiều trình duyệt sẽ không đặt cookie một cách chính xác. states that user agents should support cookies of at least 4096 bytes. For many browsers this is also the maximum size. Django will not raise an exception if there’s an attempt to store a cookie of more than 4096 bytes, but many browsers will not set the cookie correctly.

________ 375 ________ 461 (khóa, giá trị, muối = '', max_age = none, hết hạn = none, path = '/', domain = nonekey, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None

Giống như

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
62, nhưng mật mã ký cookie trước khi đặt nó. Sử dụng kết hợp với
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
63. Bạn có thể sử dụng đối số
data[line_data[0]] = map(int, line_data[1:])
16 tùy chọn để thêm sức mạnh chính, nhưng bạn sẽ cần nhớ chuyển nó cho cuộc gọi
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
63 tương ứng.cryptographic signing the cookie before setting it. Use in conjunction with
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
63. You can use the optional
data[line_data[0]] = map(int, line_data[1:])
16 argument for added key strength, but you will need to remember to pass it to the corresponding
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
63 call.

________ 375 ________ 467 (khóa, đường dẫn = '/', domain = none, samesite = none)key, path='/', domain=None, samesite=None

Xóa cookie bằng phím đã cho. Thất bại trong âm thầm nếu chìa khóa không tồn tại.

Do cách thức hoạt động của cookie,

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
6 và
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
52 phải là các giá trị tương tự bạn đã sử dụng trong
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
62 - nếu không cookie có thể không bị xóa.

________ 375 ________ 472 ()

Phương thức này được gọi vào cuối yêu cầu trực tiếp bởi máy chủ WSGI.

________ 375 ________ 474 (Nội dung) ¶content

Phương thức này làm cho một thể hiện

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như tệp.

________ 375 ________ 477 ()

Phương thức này làm cho một thể hiện

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như tệp.

________ 375 ________ 477 ()

Phương thức này làm cho một thể hiện

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như tệp.

________ 375 ________ 483 ()

Trả về giá trị của

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
84. Phương thức này tạo ra một ví dụ
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như luồng.

________ 375 ________ 487 ()

Luôn luôn

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95. Phương thức này tạo ra một ví dụ
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như luồng.

________ 375 ________ 491 ()

Luôn luôn

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95. Phương thức này tạo ra một ví dụ
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như luồng.

________ 375 ________ 491 ()

________ 375 ________ 495 ()

Luôn luôn
data[line_data[0]] = map(int, line_data[1:])
21. Phương thức này tạo ra một ví dụ
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 là một đối tượng giống như luồng.lines

________ 375 ________ 499 (dòng) ¶

Viết một danh sách các dòng cho phản hồi. Dòng phân tách không được thêm vào. Phương thức này tạo ra một ví dụ >>> request.headers {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...} >>> 'User-Agent' in request.headers True >>> 'user-agent' in request.headers True >>> request.headers['User-Agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers['user-agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('User-Agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('user-agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) 7 là một đối tượng giống như luồng.

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 Các lớp con

Django bao gồm một số lớp con
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 xử lý các loại phản hồi HTTP khác nhau. Giống như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7, những lớp con này sống trong
{{ request.headers.user_agent }}
0.
{{ request.headers.user_agent }}
05¶

Lớp ________ 505¶

Đối số đầu tiên cho hàm tạo là bắt buộc - đường dẫn chuyển hướng đến. Đây có thể là một URL đủ điều kiện (ví dụ:
{{ request.headers.user_agent }}
06), một đường dẫn tuyệt đối không có miền (ví dụ:
{{ request.headers.user_agent }}
07) hoặc thậm chí là một đường dẫn tương đối (ví dụ:
{{ request.headers.user_agent }}
08). Trong trường hợp cuối cùng đó, trình duyệt khách sẽ xây dựng lại URL đầy đủ theo đường dẫn hiện tại. Xem
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 để biết các đối số cấu trúc tùy chọn khác. Lưu ý rằng điều này trả về mã trạng thái HTTP 302.

________ 510¶

Thuộc tính chỉ đọc này đại diện cho URL, phản hồi sẽ chuyển hướng đến (tương đương với tiêu đề phản hồi
{{ request.headers.user_agent }}
11).
{{ request.headers.user_agent }}
12¶

Lớp ________ 512¶

Giống như
{{ request.headers.user_agent }}
05, nhưng nó trả về chuyển hướng vĩnh viễn (mã trạng thái HTTP 301) thay vì chuyển hướng của một người khác (mã trạng thái 302).
{{ request.headers.user_agent }}
14¶

Lớp ________ 514¶

Trình xây dựng không có bất kỳ đối số nào và không có nội dung nào được thêm vào phản hồi này. Sử dụng điều này để chỉ định rằng một trang đã được sửa đổi kể từ khi người dùng yêu cầu cuối cùng (Mã trạng thái 304).
{{ request.headers.user_agent }}
15¶

Lớp ________ 515¶

Hành vi giống như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 nhưng sử dụng mã trạng thái 400.
{{ request.headers.user_agent }}
17¶

Lớp ________ 517¶

Hành vi giống như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 nhưng sử dụng mã trạng thái 404.
{{ request.headers.user_agent }}
19¶

Lớp ________ 519¶

Hành vi giống như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 nhưng sử dụng mã trạng thái 403.
{{ request.headers.user_agent }}
21¶

Lớp ________ 521¶

Giống như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7, nhưng sử dụng mã trạng thái 405. Đối số đầu tiên cho hàm tạo là bắt buộc: một danh sách các phương thức được phép (ví dụ:
{{ request.headers.user_agent }}
23).
{{ request.headers.user_agent }}
24¶

Lớp ________ 524¶

Hành vi giống như
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 nhưng sử dụng mã trạng thái 410.
{{ request.headers.user_agent }}
26¶

Lớp ________ 526¶

Hành vi giống như

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 nhưng sử dụng mã trạng thái 500.

Ghi chú

Nếu một lớp con tùy chỉnh của
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 thực hiện phương thức
{{ request.headers.user_agent }}
29, Django sẽ coi nó là mô phỏng
{{ request.headers.user_agent }}
30 và phương thức
{{ request.headers.user_agent }}
29 phải tự trả về một đối tượng phản hồi hợp lệ.

Các lớp phản hồi tùy chỉnh

data[line_data[0]] = map(int, line_data[1:])
9

Nếu bạn thấy mình cần một lớp phản hồi mà Django không cung cấp, bạn có thể tạo nó với sự trợ giúp của >>> request.headers {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...} >>> 'User-Agent' in request.headers True >>> 'user-agent' in request.headers True >>> request.headers['User-Agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers['user-agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('User-Agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('user-agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) 10. Ví dụ:

{{ request.headers.user_agent }}
33 Đối tượng
{{ request.headers.user_agent }}
33(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs

Lớp ________ 533 (dữ liệu, bộ mã hóa = djangojsonencoder, an toàn = true, json_dumps_params = none, ** kwargs) ¶

Một lớp con

>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 giúp tạo phản hồi được mã hóa JSON. Nó kế thừa hầu hết các hành vi từ siêu lớp của nó với một vài khác biệt:

Tiêu đề

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
54 mặc định của nó được đặt thành ứng dụng/JSON.

Tham số đầu tiên,

{{ request.headers.user_agent }}
37, phải là một ví dụ
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38. Nếu tham số
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
46 được đặt thành
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95 (xem bên dưới) thì đó có thể là bất kỳ đối tượng JSON-serializable nào.JSON serialization for more details about this serializer.

{{ request.headers.user_agent }}
41, mặc định là
{{ request.headers.user_agent }}
42, sẽ được sử dụng để tuần tự hóa dữ liệu. Xem sê -ri JSON để biết thêm chi tiết về trình tiếp xúc này.

Tham số Boolean

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
46 mặc định là
data[line_data[0]] = map(int, line_data[1:])
21. Nếu nó được đặt thành
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95, bất kỳ đối tượng nào cũng có thể được thông qua để tuần tự hóa (nếu không chỉ cho phép
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38 được cho phép). Nếu
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
46 là
data[line_data[0]] = map(int, line_data[1:])
21 và một đối tượng không phải là -____ 338 được thông qua dưới dạng đối số đầu tiên, một
{{ request.headers.user_agent }}
50 sẽ được nêu ra.

Tham số {{ request.headers.user_agent }} 51 là từ điển của các đối số từ khóa để chuyển đến cuộc gọi {{ request.headers.user_agent }} 52 được sử dụng để tạo phản hồi.

Cách sử dụng¶

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
0

Cách sử dụng điển hình có thể trông giống như:

Tuần tự hóa các đối tượng phi từ điển

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
1

Để tuần tự hóa các đối tượng khác với

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38, bạn phải đặt tham số
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
46 thành
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
95:

Không vượt qua

{{ request.headers.user_agent }}
56,
{{ request.headers.user_agent }}
50 sẽ được nâng lên.

Lưu ý rằng API dựa trên các đối tượng

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
38 có thể mở rộng hơn, linh hoạt và giúp dễ dàng duy trì khả năng tương thích về phía trước. Do đó, bạn nên tránh sử dụng các đối tượng không phải DICT trong phản hồi được mã hóa JSON.

Cảnh báo

Thay đổi bộ mã hóa JSON mặc định

Nếu bạn cần sử dụng một lớp bộ mã hóa JSON khác, bạn có thể chuyển tham số

{{ request.headers.user_agent }}
41 cho phương thức Constructor:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
2

if request.method == 'GET': do_something() elif request.method == 'POST': do_something_else() 60 Đối tượng

Lớp ________ 360¶
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60¶

Lớp

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60 được sử dụng để truyền phát phản hồi từ Django đến trình duyệt. Bạn có thể muốn làm điều này nếu việc tạo phản hồi mất quá nhiều thời gian hoặc sử dụng quá nhiều bộ nhớ. Chẳng hạn, nó rất hữu ích để tạo các tệp CSV lớn.generating large CSV files.

Cân nhắc hiệu suất

Django được thiết kế cho các yêu cầu ngắn ngủi. Phản hồi phát trực tuyến sẽ buộc một quy trình công nhân trong toàn bộ thời gian phản hồi. Điều này có thể dẫn đến hiệu suất kém.

Nói chung, bạn nên thực hiện các nhiệm vụ đắt tiền bên ngoài chu kỳ phản hồi yêu cầu, thay vì dùng đến phản hồi được phát trực tuyến.

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60 không phải là một lớp con của
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7, bởi vì nó có API hơi khác. Tuy nhiên, nó gần như giống hệt nhau, với những khác biệt đáng chú ý sau:

  • Nó nên được cung cấp một iterator mang lại các bytestrings dưới dạng nội dung.
  • Bạn không thể truy cập nội dung của nó, ngoại trừ bằng cách lặp lại chính đối tượng phản hồi. Điều này chỉ nên xảy ra khi phản hồi được trả lại cho máy khách.
  • Nó không có thuộc tính
    if request.method == 'GET':
        do_something()
    elif request.method == 'POST':
        do_something_else()
    
    76. Thay vào đó, nó có thuộc tính
    {{ request.headers.user_agent }}
    
    68.
  • Bạn không thể sử dụng các phương thức đối tượng giống như tệp
    {{ request.headers.user_agent }}
    
    69 hoặc
    {{ request.headers.user_agent }}
    
    70. Làm như vậy sẽ tăng một ngoại lệ.

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60 chỉ nên được sử dụng trong các tình huống mà hoàn toàn yêu cầu rằng toàn bộ nội dung không được lặp lại trước khi chuyển dữ liệu cho máy khách. Bởi vì nội dung có thể được truy cập, nhiều phần mềm trung gian có thể chức năng bình thường. Ví dụ, các tiêu đề
{{ request.headers.user_agent }}
72 và
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
53 có thể được tạo ra cho các phản hồi phát trực tuyến.

Lớp cơ sở

{{ request.headers.user_agent }}
74 là phổ biến giữa
>>> request.headers
{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...}

>>> 'User-Agent' in request.headers
True
>>> 'user-agent' in request.headers
True

>>> request.headers['User-Agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers['user-agent']
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)

>>> request.headers.get('User-Agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
>>> request.headers.get('user-agent')
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
7 và
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60.

Thuộc tính¶

________ 577 ________ 568¶

Một trình lặp của nội dung phản hồi, bytestring được mã hóa theo

{{ request.headers.user_agent }}
79.

________ 577 ________ 385¶

Mã trạng thái HTTP cho phản hồi.HTTP status code for the response.

Trừ khi

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
86 được thiết lập rõ ràng, việc sửa đổi giá trị của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
85 bên ngoài hàm tạo cũng sẽ sửa đổi giá trị của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
86.

________ 577 ________ 386¶

Cụm lý do HTTP cho phản hồi. Nó sử dụng các cụm từ lý do mặc định tiêu chuẩn HTTP.HTTP standard’s default reason phrases.

Trừ khi được thiết lập rõ ràng,

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
86 được xác định bởi giá trị của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
85.

________ 577 ________ 394¶

Đây luôn là

data[line_data[0]] = map(int, line_data[1:])
21.

{{ request.headers.user_agent }} 92 Đối tượng

Lớp ________ 592 (open_file, as_attachment = false, filename = '', ** kwargs) ¶
{{ request.headers.user_agent }}
92(open_file, as_attachment=False, filename='', **kwargs

{{ request.headers.user_agent }}
92 là một lớp con của
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
60 được tối ưu hóa cho các tệp nhị phân. Nó sử dụng wsgi.file_wrapper nếu được cung cấp bởi máy chủ WSGI, nếu không nó sẽ phát trực tiếp tệp trong các khối nhỏ.wsgi.file_wrapper if provided by the wsgi server, otherwise it streams the file out in small chunks.

Nếu

{{ request.headers.user_agent }}
96, tiêu đề
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
73 được đặt thành
{{ request.headers.user_agent }}
98, yêu cầu trình duyệt cung cấp tệp cho người dùng dưới dạng tải xuống. Mặt khác, tiêu đề
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
73 có giá trị
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
00 (mặc định trình duyệt) sẽ chỉ được đặt nếu có tên tệp.

Nếu

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
01 không có tên hoặc nếu tên của
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
01 không phù hợp, hãy cung cấp tên tệp tùy chỉnh bằng tham số
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
03. Lưu ý rằng nếu bạn vượt qua một đối tượng giống như tệp như
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
04, thì đó là nhiệm vụ của bạn để
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
05 trước khi chuyển nó sang
{{ request.headers.user_agent }}
92.

Các tiêu đề

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
53 và
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
54 được đặt tự động khi chúng có thể được đoán từ nội dung của
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
01.

{{ request.headers.user_agent }}
92 chấp nhận bất kỳ đối tượng giống như tệp nào có nội dung nhị phân, ví dụ như một tệp mở ở chế độ nhị phân như vậy:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
3

Tệp sẽ được đóng tự động, vì vậy don don mở nó với một trình quản lý ngữ cảnh.

Phương pháp bình

________ 611 ________ 612 (Open_File) ¶open_file

Phương pháp này được gọi tự động trong quá trình khởi tạo phản hồi và đặt các tiêu đề khác nhau (

{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
53,
{'Ben5': ['0', '0', '0', '0', '0', '0', '1', '0', '1', '-3', '5', '0', '0', '0', '5', '5', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '1', '3', '0', '1', '0', '-5', '0', '0', '5', '5', '0', '5', '5', '5', '0', '5', '5', '0', '0', '0', '5', '5', '5', '5', '-5'], 
 'Moose5': ['5', '0', '0', '0', '0', '3', '0', '0', '1', '0', '5', '3', '0', '5', '0', '3', '3', '5', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '3', '5', '0', '0', '0', '0', '0', '5', '-3', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '5', '5', '0', '3', '0', '0']}
54 và
if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
73) tùy thuộc vào
if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.
01.

{{ request.headers.user_agent }} 74 Lớp

Lớp ________ 574¶
{{ request.headers.user_agent }}
74¶

Lớp

{{ request.headers.user_agent }}
74 là phổ biến cho tất cả các phản hồi của Django. Nó không nên được sử dụng để tạo phản hồi trực tiếp, nhưng nó có thể hữu ích cho việc kiểm tra loại.