Domanda

some_view?param1=10&param2=20

def some_view(request, param1, param2):

è tale possibile in Django?

È stato utile?

Soluzione

Si può sempre scrivere un decoratore. Per esempio. qualcosa di simile (non testata):

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

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

Altri suggerimenti

Non sono sicuro che sia possibile farlo passare loro come argomenti alla funzione di visualizzazione, ma perché non si può accedere alle variabili GET da request.GET? Dato che URL, Django avrebbe request.GET['param1'] essere 10 e request.GET['param2'] essere 20. In caso contrario, che avrebbe dovuto trovare un qualche tipo di espressione regolare strano per cercare di fare quello che vuoi.

Sono d'accordo con Paolo ... la roba dopo il '?' sono parametri GET e dovrebbe probabilmente essere trattato come tale. Detto questo, se si vuole davvero mantenere la definizione di some_view () come hai affermato nella domanda, si potrebbe fare qualcosa di simile:

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

Oppure si può semplicemente definire some_view () come questo e utilizzare i params GET. Solo per curiosità, perché vuoi questo?

Invece di combattere Django, perché non basta richiedere some_view / 10/20 e quindi impostare fino urls.py per estrarre gli argomenti?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top