Para aclarar la explicación de camflan, vamos a suponer que usted tiene
- la regla
url(regex=r'^user/(?P<username>\w{1,50})/$', view='views.profile_page')
- una de las peticiones entrantes para la regla despachador
http://domain/user/thaiyoshi/?message=Hi
La URL cogerá partes de la URL ruta (aquí "user/thaiyoshi/"
) y pasarlos a la función de vista junto con el objeto de solicitud.
La cadena de consulta (aquí message=Hi
) se analiza y los parámetros se almacenan como QueryDict
en request.GET
. No se realiza ninguna otra coincidencia o 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, se encuentra el método de la petición (en este caso "GET"
, y para los formularios enviados generalmente "POST"
) en request.method
. En algunos casos, es útil verificar que coincida con lo que está esperando.
Actualización: la hora de decidir si se debe utilizar la ruta URL, o los parámetros de consulta para la transmisión de información, lo siguiente puede ayudar:
- utilizar la ruta URL para la identificación exclusiva de los recursos, por ejemplo,
/blog/post/15/
(no /blog/posts/?id=15
)
- utilice parámetros de consulta para cambiar la forma en que se muestra el recurso, p.
/blog/post/15/?show_comments=1
o /blog/posts/2008/?sort_by=date&direction=desc
- para hacer URL amigables para los humanos, evite el uso de números de ID y use, p. fechas, categorías y/o babosas:
/blog/post/2008/09/30/django-urls/
¿Es '? Param =' la única forma en que Django reconoce los parámetros? ¿Hay alguna forma de usar URLconf con HTTP.GET? Me gustaría hacer/param/2. – sutee
Compruebe la segunda parte de mi respuesta con respecto a su URLconf y las capturas de expresiones regulares. – camflan
Ok. Actualmente estoy usando el segundo método. Parece que son mecanismos separados, y estoy tratando de mezclarlos. ¡Gracias! – sutee