2011-01-14 7 views
1

Gibt es etwas zwischen middleware und Ansicht, damit ich meinen Code anschließen kann oder muss ich etwas von Django ableiten, um diese Funktionalität bereitzustellen?Gibt es in Django etwas zwischen Middleware und View, damit ich meinen Code einstecken kann?

Lassen Sie mich zuerst erklären, warum ich das brauche, vielleicht gibt es eine bessere Lösung, die Sie vorschlagen können. Ich möchte einige meiner URLs aufgrund einiger Konfigurationen einschränken. Und, - Ich möchte diese Konfiguration Teil der URL-Konfiguration sein - Nach der Konfiguration zur Verfügung gestellt, möchte ich umleiten, etc zu einer anderen Ansicht.

Was ich mit "Teil der URL-Konfiguration" meine, ist etwas wie folgt.

url(r'^admin/blah/blah$', do_something, name='admin-blah-blah', {'security_level': 'very_secure', 'auth_method' : 'oauth', 'auth_url', 'http://www.foo.com'}) 

Es ist wie es scheint, ist etwas, das von Middle getan werden sollte, aber ich will mich nicht mit Middle aus 2 Gründen tun. - Ich möchte keine separate Konfiguration beibehalten. - Ich will nicht regex Anpassung für URL-Muster ein weiteres Mal, URL-Resolver tun, ist bereits tun, dass

Also, wenn ich nur einen Weg finden, einige Funktionen kurz vor dem Blick zu stopfen und die Konfiguration erreichen können zur Verfügung gestellt, Es löst mein Problem.

Antwort

4

Klingt wie Sie dies mit einem Dekorateur auf Ihren Ansichten tun können:

@restrict_url(security_level='very_secure', auth_method='oauth', 
       auth_url= 'http://www.foo.com') 
def my_view(request): 
    ... etc ... 

Sie können einige Ideen zu bekommen, wie die restrict_url Dekorateur schreiben an den vorgesehen diejenigen in django.contrib.auth.decorators durch suchen.

+0

Das ist elegant, ich sollte die django docs zuerst lesen :) danke für das Aufzeigen. –