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路径,使用这是一个全面的胜利。