2010-05-30 6 views
8

Bien qu'il est recommandé d'utiliser la construction suivante pour vérifier si la demande est POST,type de demande de vérification dans Django

if request.method == 'POST': 
    pass 

Il est probable que les gens vont trouver

if request.POST: 
    pass 

pour être plus élégant et concis.

Y a-t-il des raisons de ne pas l'utiliser, en dehors de vos préférences personnelles?

+1

Je pense que c'est un endroit que Sinatra utilise une meilleure approche: vous gérez POST, PUT, GET, DELETE, etc avec un autre gestionnaire. J'ai une fonction appelée dispatch dans mon générateur d'API pour fractionner les appels selon la méthode de requête HTML. –

+0

@Matthew Schinckel ne conduit pas à la duplication de code ou au moins la duplication des appels aux fonctions nécessaires pour obtenir des données communes, par exemple la liste des utilisateurs? – Art

+0

@Art il ne devrait pas – andho

Répondre

12

La documentation est claire à ce sujet:

Il est possible qu'une demande peut venir via POST avec un dictionnaire vide POST - si, par exemple, un formulaire est demandé via la méthode HTTP POST mais n'inclut pas les données de formulaire. Par conséquent, vous ne devez pas utiliser si request.POST pour vérifier l'utilisation de la méthode POST; à la place, utilisez si request.method == "POST" (voir ci-dessus).

>>> # assume an empty POST request would be treated as a dict 
>>> bool({}) 
False 
>>> # it would be a POST request, but request.POST would evaluate to False 
Questions connexes