Pregunta

some_view?param1=10&param2=20

def some_view(request, param1, param2):

¿Es posible tal en Django?

¿Fue útil?

Solución

Siempre se puede escribir un decorador. P.ej. algo así (no probado):

def map_params(func):
    def decorated(request):
        return func(request, **request.GET)
    return decorated

@map_params
def some_view(request, param1, param2):
    ...

Otros consejos

No estoy seguro de que es posible conseguir que pase a ellos como argumentos a la función de vista, pero ¿por qué no se puede acceder a las variables de GET request.GET? Teniendo en cuenta que el URL, Django tendría que ser request.GET['param1'] 10 y 20. request.GET['param2'] ser lo contrario, tendría que llegar a algún tipo de expresión regular extraña para tratar de hacer lo que quiera.

Estoy de acuerdo con Paolo ... las cosas después de que el '?' son parámetros GET y probablemente debería ser tratado como tal. Dicho esto, si usted realmente quiere mantener la definición de some_view () como se ha declarado en la pregunta, usted podría hacer algo como:

from django.http import Http404
def some_view_proxy(request):
     if 'param1' in request.GET and 'param2' in request.GET:
         return some_view(request, request.GET['param1'],
                          request.GET['param2'])
     raise Http404

O usted podría definir some_view () como este y utilizar los parametros GET. Sólo por curiosidad, ¿por qué quieres eso?

En lugar de luchar Django, ¿por qué no pedir some_view / 10/20 y luego configurar urls.py para extraer los argumentos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top