Frage

Ich erstelle eine App mit Web2Py -Framework ... Ich möchte nicht das Anforderungsobjekt verwenden müssen, um alle QueryString -Parameter zu erhalten. Statt (oder Formata) Wörterbuch in die benannten Parameter und rufen Sie meinen Controller auf.

Also statt einer Controller -Methode von

create_user():

wo ich das global Request () Objekt () verwenden und durch die VARS -Liste schauen würde ... Ich würde es vorziehen, stattdessen zu haben

create_user(first_name, last_name, email):

Wie ich auf anderen MVC -Plattformen sehe.

Ist das schon in Web2Py möglich? Oder gibt es ein Plugin dafür? Oder muss ich das selbst hinzufügen?

War es hilfreich?

Lösung

Nein. Wie in der angegeben Buchen, eine URL der Form

http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2

Karten zur Anwendung (Ordner) a, Controller (Datei) c.py, Funktion f, und die zusätzlichen Argumente müssen aus dem Anforderungsobjekt als ausgepackt werden

x, y, z = tuple(request.args)
p = request.vars['p'] # p=1
q = request.vars['q'] # q=2 

Darüber hinaus erkennt Web2Py gültige Controller -Funktionen als die Funktionen, die keine Argumente haben. AFAICR, dies ist entgegengesetzt zu Django, das gültige Controller -Funktionen als solche erfasst, die mindestens ein Argument haben.

Andere Tipps

Ich tue

def create_user():
    try:
        first_name, last_name, email = request.args[:3]
    except:
        redirect('some_error_page')

Achten Sie jedoch darauf, dass First_Name, Last_Name und E-Mail möglicherweise Zeichen enthalten, die im path_info nicht zulässig sind (Web2Py in Picky, wenn dies nur [ w -.] Validiert ist, sind erlaubt).

Es gibt einen Umstand, unter dem Web2Py -Controller Parameter verwenden können. Wenn eine Controller -Funktion den @Service -Dekorator hat, können Parameter verwendet werden, je nach Service -Typ, z. B.:

@service.jsonrpc
def somefunction(a=None, b='default'):
    ## whatever

Dieser Ansatz ist für die Zeit, in der eine Controller -Funktion wirklich eine API ist, keine Möglichkeit, eine Webansicht zu generieren. Es gibt schöne Dinge, die Sie tun können, um die Funktionen im Web-View- und API-Stil parallel zu definieren und die Webansichten die API-Funktionen aufzurufen, um sicherzustellen, dass Sie eine gute Trennung von Ansichten und Controllern haben.

Abhängig davon, wie Sie die Verantwortung zwischen dem Web-Client / JavaScript, der Web2Py-Ansicht und dem Web2Py-Controller teilen, kann es sinnvoll sein, Controller-Funktionen zu haben, die wirklich APIs (mit optionalen Parametern) sind, anstatt die Parameter-Unpacking-Logik in zu erstellen Ein Web-View-Style-Controller.

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