2009-04-18 8 views

Antwort

3

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): 
    ... 
+0

Schön. Ich denke, das würde funktionieren. Sehr puerty. :) +1 –

1

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.

1

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?

+0

Ich brauche diese Ursache - seine Verwendung weniger Code, kann ich vielleicht einen Dekorateur macht für diesen –

1

Anstatt Django zu bekämpfen, fordern Sie einfach some_view/10/20 an und richten Sie urls.py ein, um die Argumente zu extrahieren.

+0

1: Verwenden Sie die URLs - alles besser funktioniert. –

+0

Ich kämpfe nicht, es ist mein JSON-Dienst, jQuery verwenden params zu senden, viele verschiedene und viele nicht erforderlich. Deshalb ist es einfacher. –

Verwandte Themen