Yêu cầu Django nhận thông số


84

Trong một yêu cầu Django, tôi có những điều sau:

POST:<QueryDict: {u'section': [u'39'], u'MAINS': [u'137']}>

Làm cách nào để nhận các giá trị của sectionMAINS?

if request.method == 'GET':
    qd = request.GET
elif request.method == 'POST':
    qd = request.POST

section_id = qd.__getitem__('section') or getlist....

7
Không bao giờ gọi trực tiếp một trong các phương pháp ma thuật. Luôn sử dụng chức năng trợ giúp thích hợp.
Ignacio Vazquez-Abrams

k có cách nào để giải mã các phần
Hulk

1
Đọc qua tài liệu django về các đối tượng này: docs.djangoproject.com/en/dev/ref/request-response/… . Có một số khác biệt so với dict trong python.
Trượt tuyết vào

Câu trả lời:


90

Bạn có thể sử dụng []để trích xuất các giá trị từ một QueryDictđối tượng giống như bất kỳ từ điển thông thường nào.

# HTTP POST variables
request.POST['section'] # => [39]
request.POST['MAINS'] # => [137]

# HTTP GET variables
request.GET['section'] # => [39]
request.GET['MAINS'] # => [137]

# HTTP POST and HTTP GET variables (Deprecated since Django 1.7)
request.REQUEST['section'] # => [39]
request.REQUEST['MAINS'] # => [137]

9
chỉ là một gợi ý sau
ngần ấy

189

Bạn cũng có thể sử dụng:

request.POST.get('section','') # => [39]
request.POST.get('MAINS','') # => [137] 
request.GET.get('section','') # => [39]
request.GET.get('MAINS','') # => [137]

Sử dụng điều này đảm bảo rằng bạn không gặp lỗi. Nếu dữ liệu POST / GET với bất kỳ khóa nào không được xác định thì thay vì tăng một ngoại lệ, giá trị dự phòng (đối số thứ hai của .get () sẽ được sử dụng).


1
Chắc chắn là cách mạnh mẽ nhất!
d-coder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.