Żądanie Django pobierz parametry


84

W żądaniu Django mam:

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

Jak uzyskać wartości sectioni MAINS?

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

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

7
Nigdy nie wywołuj bezpośrednio żadnej z magicznych metod. Zawsze używaj odpowiedniej funkcji pomocniczej.
Ignacio Vazquez-Abrams

k czy jest jakiś sposób na dekodowanie sekcji
Hulk,

1
Przeczytaj dokumentację django dotyczącą tych obiektów: docs.djangoproject.com/en/dev/ref/request-response/… . Istnieją pewne różnice w porównaniu z dyktowaniem w Pythonie.
Ski

Odpowiedzi:


91

Możesz użyć []do wyodrębnienia wartości z QueryDictobiektu, tak jak w przypadku każdego zwykłego słownika.

# 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]

10
tylko wskazówka po tych wszystkich latach: request.REQUEST jest tymczasem przestarzała
aronadaal

190

Możesz również użyć:

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

Użycie tego gwarantuje, że nie otrzymasz błędu. Jeśli dane POST / GET z dowolnym kluczem nie są zdefiniowane, zamiast zgłaszania wyjątku zostanie użyta wartość rezerwowa (zostanie użyty drugi argument funkcji .get ()).


1
Zdecydowanie najbardziej solidny sposób!
d-coder
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.