some_view?param1=10¶m2=20
def some_view(request, param1, param2):
Ist so in Django möglich?Auto GET zu Argument der Ansicht
some_view?param1=10¶m2=20
def some_view(request, param1, param2):
Ist so in Django möglich?Auto GET zu Argument der Ansicht
Sie könnten 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):
...
Ich bin nicht sicher, ob es möglich ist, es zu bekommen, sie als Argumente zu übergeben an die View-Funktion, aber warum haben Sie Zugriff nicht die GET
Variablen aus request.GET
? Mit dieser URL würde Django request.GET['param1']
10 und request.GET['param2']
20 sein. Andernfalls müssten Sie mit einer Art seltsamen regulären Ausdruck kommen, um zu versuchen, was Sie wollen.
Ich stimme Paolo zu ... der Kram nach dem '?' sind GET-Parameter und sollten 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 so etwas wie tun könnte:
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 aus und verwenden Sie die GET params. Nur neugierig, warum willst du das?
Ich brauche diese Ursache - seine Verwendung weniger Code, kann ich vielleicht einen Dekorateur macht für diesen –
Anstatt Django zu bekämpfen, fordern Sie einfach some_view/10/20 an und richten Sie urls.py ein, um die Argumente zu extrahieren.
1: Verwenden Sie die URLs - alles besser funktioniert. –
Ich kämpfe nicht, es ist mein JSON-Dienst, jQuery verwenden params zu senden, viele verschiedene und viele nicht erforderlich. Deshalb ist es einfacher. –
Schön. Ich denke, das würde funktionieren. Sehr puerty. :) +1 –