2009-08-04 3 views
0

Ich hatte gehofft, dass Django eine eingebaute Möglichkeit hatte, die letzte URL zu erhalten, die in der App selbst besucht wurde. Während ich dies schreibe, merke ich, dass es einige Komplikationen gibt, wenn man so etwas macht (ausgenommen Seiten, die umleiten, zum Beispiel), aber ich dachte, ich würde es versuchen.Hat Django eine eingebaute Möglichkeit, die letzte App-URL zu erhalten, die der aktuelle Benutzer besucht hat?

Wenn es keine integrierte für diese gibt, welche Strategie würden Sie verwenden? Ich meine anderes als nur eine URL manuell in der Sitzung zu speichern und darauf Bezug zu nehmen, wenn ich umadressiere. Das würde natürlich funktionieren, aber ich hasse den Gedanken, dass ich daran denken muss, das für jede Sichtweise zu tun. Scheint fehleranfällig und nicht sehr elegant.

Oh, und ich bin lieber nicht abhängig von Server spezifischen Verweis Umgebungsvariablen.

Antwort

5

Nein, es gibt nichts, das in den Django-Kern eingebaut ist (und es ist nicht eingebaut, weil es kein übliches Verwendungsmuster ist).

Wie Javier vorgeschlagen, könnten Sie Middleware machen, die das macht, was Sie wollen. Etwas wie folgt aus:

class PreviousURLMiddleware(object): 
    def process_response(request, response): 
     if response.status_code == 200: 
      request.session['previous_url'] = request.get_full_url() 
     return response 

Diese Middleware gehen nach SessionMiddleware in Ihren Einstellungen haben würde, um sicherzustellen, dass die Sitzung danach aktualisiert werden (die Dokumentation haben eine pretty picture zu erklären, warum dies ist).

0

Sie können einfach eine Middleware schreiben, die genau das tut, keine Notwendigkeit, den Logging-Code für jede View-Funktion zu wiederholen.

+0

Sie sagen, es gibt Middleware, die dies oder das tut, sollte ich meine eigene Middleware dafür erstellen? – Karim

+1

Er sagt, Sie sollten Ihre eigene Middleware erstellen, glaube ich. – hughdbrown

Verwandte Themen