django模板是否可以找到其命名的url,或者基本模板可以知道哪个模板正在扩展它?

时间:2011-10-28 11:34:34

标签: python django django-templates

在我的URLConf中,我的网址名字很整齐,所以我可以进行反向查找并保持干净。

我的所有模板都扩展了一个名为base.html的通用模板。在base.html中,在很多HTML框架中,我显示了一个登录表单。

我还有一个特定的视图,它使用Django提供的auth_views.login视图,该视图显示我的自定义模板login.html。与所有其他模板一样,此模板扩展了base.html模板。

在这种情况下,我希望base.html模板不会显示其登录表单(login.html模板已显示登录表单)。为了做到这一点,base.html要么知道它被用于扩展login.html,要么知道导致base.html被扩展的命名URL的名称为{{1} }}

你能建议一种方法吗?我正在考虑编写自己的视图,该视图将使用包含'myapp-login' var的额外上下文调用auth_views.login。基于此var,suppress_header_login_form模板可以禁止登录表单。但是,我试图看看是否有更好的方法来实现这一目标。

1 个答案:

答案 0 :(得分:4)

您可以使用模板继承和阻止来管理它。

您的base.html定义了一个名为login的块,它围绕着用于登录的HTML - 而您的login.html会使用空版本覆盖该块:

base.html文件:

{% block login %}
    ... login form here ...
{% endblock %}

{% block main %}
{% endblock %}

的login.html:

{% extends "base.html" %}

{% block login %}
{% endblock %}

{% block main %}
   ... real login form here ...
{% endblock %}