django模板:访问项目根路径

时间:2013-04-10 09:27:53

标签: django templates path root

我想访问模板中的根路径变量,我该怎么做? 到目前为止,我有:

{% 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 个答案:

答案 0 :(得分: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):
    ...

答案 1 :(得分:0)

虽然我同意Timmy的意见,你不应该尝试在模板中进行这种重定向,但请注意,有一种简单的方法可以获取视图的完整URL:那就是使用{{1} } 标签。该标记(以及视图中的{% url %}函数)知道您从WSGI环境获取的站点的完整路径,因此无需传递额外的变量。因为你不应该对URL路径进行硬编码,所以使用它是一个全面的胜利。