Frage

some_view?param1=10&param2=20

def some_view(request, param1, param2):

Ist eine solche möglich in Django?

War es hilfreich?

Lösung

Sie können immer einen Dekorateur schreiben. Z.B. so etwas wie (nicht getestet):

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

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

Andere Tipps

Ich bin nicht sicher, ob es möglich ist, es zu bekommen, sie als Argumente zu übergeben in der View-Funktion, aber warum haben Sie Zugriff nicht die GET Variablen aus request.GET? Da die URL, würde Django haben request.GET['param1'] 10 sein und request.GET['param2'] 20. Ansonsten sein, müssten Sie mit irgendeiner Art von seltsamen regulären Ausdruck zu kommen, um zu versuchen und zu tun, was Sie wollen.

Ich bin mit Paolo ... das Zeug nach dem ‚?‘ GET-Parameter und soll wahrscheinlich als solche behandelt werden. Das heißt, wenn Sie wirklich die Definition von some_view behalten wollen (), wie Sie in der Frage angegeben haben, können Sie etwas tun könnten, wie:

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

Oder Sie könnten nur definieren some_view () wie folgt und die GET params verwenden. Einfach nur neugierig, warum, die Sie wollen?

Statt Django zu kämpfen, warum nicht nur fordern some_view / 10/20 und dann einrichten urls.py die Argumente zu extrahieren?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top