¿Cómo obtener valores de solicitud GET en Django?

Resuelto sutee asked hace 16 años • 19 respuestas

Actualmente estoy definiendo expresiones regulares para capturar parámetros en una URL, como se describe en el tutorial. ¿Cómo accedo a los parámetros desde la URL como parte del HttpRequestobjeto?

Actualmente devuelve HttpRequest.GETun QueryDictobjeto vacío.

Me gustaría aprender a hacer esto sin una biblioteca, para poder conocer mejor a Django.

sutee avatar Sep 30 '08 03:09 sutee
Aceptado

Cuando una URL es como domain/search/?q=haha, usarías request.GET.get('q', '').

qes el parámetro que desea y ''es el valor predeterminado si qno se encuentra.

Sin embargo, si simplemente está configurando su URLconf**, entonces sus capturas de se regexpasan a la función como argumentos (o argumentos con nombre).

Como:

(r'^user/(?P<username>\w{0,50})/$', views.profile_page,),

Entonces en tu views.pytendrías

def profile_page(request, username):
    # Rest of the method
camflan avatar Sep 29 '2008 20:09 camflan

Para aclarar la explicación de camflan , supongamos que tiene

  • la reglaurl(regex=r'^user/(?P<username>\w{1,50})/$', view='views.profile_page')
  • una solicitud entrante parahttp://domain/user/thaiyoshi/?message=Hi

La regla del distribuidor de URL capturará partes de la ruta de la URL (aquí "user/thaiyoshi/") y las pasará a la función de visualización junto con el objeto de solicitud.

La cadena de consulta (aquí message=Hi) se analiza y los parámetros se almacenan como un QueryDictarchivo request.GET. No se realizan más coincidencias ni procesamiento para los parámetros HTTP GET.

Esta función de vista usaría ambas partes extraídas de la ruta URL y un parámetro de consulta:

def profile_page(request, username=None):
    user = User.objects.get(username=username)
    message = request.GET.get('message')

Como nota al margen, encontrará el método de solicitud (en este caso "GET"y, por lo general, para los formularios enviados "POST") en request.method. En algunos casos, es útil comprobar que coincide con lo esperado.

Actualización: al decidir si utilizar la ruta URL o los parámetros de consulta para pasar información, lo siguiente puede ayudar:

  • utilice la ruta URL para identificar recursos de forma única, por ejemplo /blog/post/15/(no /blog/posts/?id=15)
  • utilizar parámetros de consulta para cambiar la forma en que se muestra el recurso, por ejemplo, /blog/post/15/?show_comments=1o/blog/posts/2008/?sort_by=date&direction=desc
  • Para crear URL amigables para los humanos, evite usar números de identificación y use, por ejemplo, fechas, categorías y/o slugs:/blog/post/2008/09/30/django-urls/
akaihola avatar Oct 01 '2008 12:10 akaihola

Usando OBTENER

request.GET["id"]

Usando la publicación

request.POST["id"]
Dadaso Zanzane avatar Jan 21 '2015 08:01 Dadaso Zanzane