Django Anfrage Get Parameter


84

In einer Django-Anfrage habe ich Folgendes:

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

Wie erhalte ich die Werte von sectionund MAINS?

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

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

7
Rufen Sie niemals eine der magischen Methoden direkt auf. Verwenden Sie immer die entsprechende Hilfsfunktion.
Ignacio Vazquez-Abrams

k gibt es eine Möglichkeit, Abschnitte zu dekodieren
Hulk

1
Lesen Sie die Django-Dokumentation zu diesen Objekten durch: docs.djangoproject.com/de/dev/ref/request-response/… . Es gibt einige Unterschiede zum Diktat in Python.
Ski

Antworten:


90

Sie können []damit Werte aus einem QueryDictObjekt extrahieren, wie Sie es von einem normalen Wörterbuch gewohnt sind.

# 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
Nur ein Hinweis nach all den Jahren: request.REQUEST ist mittlerweile veraltet
aronadaal

189

Sie können auch verwenden:

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

Dadurch wird sichergestellt, dass Sie keinen Fehler erhalten. Wenn die POST / GET-Daten mit einem Schlüssel nicht definiert sind, wird anstelle einer Ausnahme der Fallback-Wert (zweites Argument von .get () verwendet) verwendet.


1
Auf jeden Fall am robustesten!
D-Coder
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.