2012-04-08 13 views
0

Ich verwende bedingt zwei verschiedene URL-Muster, bedeuten auf einer URL Ich überprüfe bedingt usernype und dann URL-Muster entsprechend.Folgende ist, was das ist in meinem urls.pyAnfrage ist nicht für Bedingungen in URL-Mustern in Django verfügbar

Jetzt, als ich versuchte, Benutzerprofil mit request.user.get_profile zu bekommen, dann sagt Django, dass Anfrage nicht definiert ist. Es ist wahr, aber wie kann ich dieses Profil bis zu diesem Ort definieren, indem ich einen Import verwende oder es gibt einen anderen besseren Weg, dies zu tun?

Antwort

2

Kein Code in Python hat jemals einen automatischen Zugriff auf Variablen, die an anderer Stelle definiert sind. Die Namen müssen immer entweder im aktuellen Modul definiert sein oder von woanders importiert werden. Dies gilt für die Anfrage genauso wie für jede andere Python-Variable.

Aber selbst wenn Sie eine Anfragevariable in urls.py bekommen könnten, würde dies immer noch nicht funktionieren. URLconfs sind allgemein für den gesamten Serverprozess und nicht für jede Anfrage spezifisch. Es gibt einfach keine "Anfrage" oder "Benutzer" an dem Punkt, an dem die URLs ausgewertet werden.

Der richtige Weg, dies zu tun, ist eine einfache Sicht für dashboard zu definieren, die nur request.user prüft und dann von dort zur richtigen Funktion geht.

+0

+1 für solche detaillierte Antwort, wie kann ich zur aktuellen Funktion senden? meinst du nur zwei verschiedene Funktionen aufrufen und diese Funktionen Antwort zurückgeben? – Hafiz

+0

Ja, genau das. –

+0

ok danke, Daniel – Hafiz