Trong chế độ xem Django, bạn có thể truy cập request.GET['variablename']
, vì vậy trong chế độ xem của bạn, bạn có thể thực hiện một số việc như sau:
myvar = request.GET['myvar']
request.GET['myvar']
Loại đối tượng thực tế là:
<class 'django.http.QueryDict'>
Bây giờ, nếu bạn muốn truyền nhiều biến có cùng tên tham số, tức là:
http://example.com/blah/?myvar=123&myvar=567
Bạn muốn một python được list
trả về cho tham số myvar
, sau đó làm điều gì đó như sau:
for var in request.GET['myvar']:
print(var)
Tuy nhiên, khi bạn thử mà bạn chỉ nhận được giá trị cuối cùng được truyền vào url, tức là trong ví dụ trên, bạn sẽ nhận được 567 và kết quả trong trình bao sẽ là:
5
6
7
Tuy nhiên, khi bạn in request.GET
nó có vẻ như nó có list
nghĩa là:
<QueryDict: {u'myvar': [u'123', u'567']}>
Ok Cập nhật: Nó được thiết kế để trả về giá trị cuối cùng, trường hợp sử dụng của tôi là tôi cần một danh sách.
từ tài liệu django:
QueryDict. getitem (khóa) Trả về giá trị cho khóa đã cho. Nếu khóa có nhiều hơn một giá trị, getitem () trả về giá trị cuối cùng. Tăng django.utils.datastructures.MultiValueDictKeyError nếu khóa không tồn tại. (Đây là một lớp con của KeyError tiêu chuẩn của Python, vì vậy bạn có thể bám vào việc bắt KeyError
QueryDict.getlist (key) Trả về dữ liệu có khóa được yêu cầu, dưới dạng danh sách Python. Trả về danh sách trống nếu khóa không tồn tại. Nó được đảm bảo trả về một danh sách của một số loại.
Cập nhật: Nếu có ai biết tại sao nhà phát triển django đã làm điều này, vui lòng cho tôi biết, có vẻ như phản trực quan để hiển thị một danh sách và nó không hoạt động giống như một danh sách. Không phải là trăn!