2010-05-30 25 views
8

Si bien se recomienda utilizar el siguiente constructor para comprobar si la petición es POST,Comprobar tipo de petición en Django

if request.method == 'POST': 
    pass 

Es probable que la gente encontrará

if request.POST: 
    pass 

para ser más elegante y conciso.

¿Hay alguna razón para no usarlo, además de las preferencias personales?

+1

creo que este es un lugar que Sinatra utiliza un método mejor: usted maneja POST, PUT, GET, DELETE, etc con un controlador diferente. Tengo una función llamada dispatch en mi generador de API para dividir las llamadas según el método de solicitud HTML. –

+0

@Matthew Schinckel no conduce a la duplicación de código o al menos a la duplicación de llamadas a funciones necesarias para obtener algunos datos comunes, por ejemplo, lista de usuarios. – Art

+0

@Art no debería – andho

Respuesta

12

La documentación es clara en esto:

Es posible que una solicitud puede venir en medio de POST con un diccionario de POST vacío - si, por ejemplo, una forma es solicitado a través del método HTTP POST pero no incluye datos de formulario. Por lo tanto, no debe usar if request.POST para verificar el uso del método POST; en su lugar, use if request.method == "POST" (vea arriba).

>>> # 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 
Cuestiones relacionadas