2013-04-10 105 views
0

我想訪問我的模板中的根路徑變量,我該怎麼做? 到目前爲止,我有:django模板:訪問項目根路徑

{% if user.username == "" and request.path != "/login/" and request.path != "/" %} 
    <meta http-equiv="REFRESH" content="0;url=/login/"> 
{% else %} 

我想編寫這樣的事:

{% if user.username == "" and request.path != projectRoot+"/login/" and request.path != projectRoot %} 
    <meta http-equiv="REFRESH" content="0;url=projectRoot+/login/"> 
{% else %} 

我應該創建並從我的觀點發送此projectRoot變量,或者是有已經是一個變量?

提前許多感謝,

羅曼

+2

有沒有你想通過這種方式登錄重定向一個特別的原因?這樣做有很多更好的方法(比如使用['login_required'](https://docs.djangoproject.com/en/dev/topics/auth/default/#the-login-required-decorator)裝飾器) – 2013-04-10 09:34:22

回答

1

您可以使用request.full_path獲得URl的完整路徑,並編寫一個模板標籤來檢查它是否包含字符串,但這是嘗試做你想做的事情(在未經授權時重定向)的非常糟糕的方式。

相反,你should decorate your view using @login_required

from django.contrib.auth.decorators import login_required 

@login_required 
def my_view(request): 
    ... 
+0

有趣!我剛剛嘗試過,但不起作用。未記錄時,我被重定向到http://127.0.0.1/accounts/login/?next=/import/(由於LOGIN_URL變量),這對我的應用程序不正確。如何修改LOGIN_URL一次?在設置文件中? – rom 2013-04-10 10:28:24

0

雖然我與鄧肯同意,你不應該試圖做這樣的模板重定向,注意,得到一個簡單的方法完整的網址到視圖:這是使用{% url %}標記。該標記(以及視圖中的reverse函數)知道從WSGI環境獲取的站點的完整路徑,因此不需要傳遞額外的變量。既然你不應該硬編碼的URL路徑,使用這是一個全面的勝利。