Pergunta

some_view?param1=10&param2=20

def some_view(request, param1, param2):

É tão possível em Django?

Foi útil?

Solução

Você pode sempre escrever um decorador. Por exemplo. algo como (não testado):

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

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

Outras dicas

Eu não tenho certeza que é possível obtê-lo para passá-los como argumentos para a função de visão, mas porque você não pode acessar as variáveis ??GET de request.GET? Dado que URL, Django teria request.GET['param1'] ser 10 e request.GET['param2'] ser 20. Caso contrário, você teria que chegar a algum tipo de expressão regular estranho para tentar e fazer o que quiser.

Eu concordo com Paolo ... o material após o '?' são parâmetros GET e provavelmente deve ser tratado como tal. Dito isto, se você realmente quer manter a definição de some_view () como você indicou na pergunta, você poderia fazer 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

Ou você poderia apenas definir some_view () como este e usar os parâmetros GET. Só por curiosidade, por que você quer isso?

Em vez de lutar Django, porque não basta pedido some_view / 10/20 e, em seguida, configurar urls.py para extrair os argumentos?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top