2010-11-12 8 views
51

une demande Django je donne les résultats suivantsdemande Django obtenir des paramètres

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

Comment obtenir les valeurs de section et MAINS?

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

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

N'appelez jamais l'une des méthodes magiques directement. Utilisez toujours la fonction d'assistance appropriée. –

+0

k existe-t-il un moyen de décoder les sections? – Hulk

+1

Lisez la documentation de django sur ces objets: http://docs.djangoproject.com/fr/dev/ref/request-response/#querydict-objects. Il y a quelques différences par rapport à dict en python. – Ski

Répondre

58

Vous pouvez utiliser [] pour extraire des valeurs d'un objet QueryDict comme vous le feriez pour tout le dictionnaire ordinaire.

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

juste un indice après toutes ces années: request.REQUEST est désapprouvé quant à lui – aronadaal

140

Vous pouvez également utiliser:

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

L'utilisation afin que vous ne recevez pas une erreur. Si les données POST/GET avec une clé quelconque ne sont pas définies, au lieu de lever une exception, la valeur de repli (le second argument de .get() sera utilisé).

+14

+1 pour le faire de manière robuste –

+0

Certainement la manière la plus robuste! –

Questions connexes