0

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

{% 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 变量,还是已经有一个变量?

提前谢谢了,

罗曼

4

2 回答 2

1

您可以使用获取 URl 的完整路径request.full_path并编写模板标记来检查它是否包含字符串,但这是尝试做您想做的事情的一种非常糟糕的方式(未经授权时重定向)。

相反,您应该使用以下方式装饰您的视图@login_required

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...
于 2013-04-10T09:37:20.343 回答
0

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

于 2013-04-10T09:36:44.157 回答