Python django模板能否找到它的命名url,或者基础模板能否知道哪个模板在扩展它?

Python django模板能否找到它的命名url,或者基础模板能否知道哪个模板在扩展它?,python,django,django-templates,Python,Django,Django Templates,在我的URLConf中,我将我的URL整齐地命名,这样我就可以进行反向查找并保持一切干燥 我的所有模板都扩展了一个名为base.html的通用模板。在base.html中,在许多html框架中,我显示了一个登录表单 我还有一个特定的视图,它使用Django提供的auth_views.login视图,该视图显示我的自定义模板login.html。与所有其他模板一样,此模板扩展了base.html模板 在这种情况下,我希望base.html模板不会显示其登录表单login.html模板已经显示了登录

在我的URLConf中,我将我的URL整齐地命名,这样我就可以进行反向查找并保持一切干燥

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

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

在这种情况下,我希望base.html模板不会显示其登录表单login.html模板已经显示了登录表单。为此,base.html需要知道它正被用来扩展login.html,或者知道导致base.html被扩展的命名URL的名称为“myapp login”


你能建议一种方法吗?我正在考虑编写自己的视图,该视图将使用额外的上下文调用auth_views.login,其中包括suppress_header_login_form变量。基于此变量,base.html模板可以抑制登录表单。不过,我想看看是否有更好的方法来实现这一点。

您可以通过模板继承和块来管理这一点

您的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 %}

您可以使用模板继承和块来管理这一点

您的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 %}

我没想到这个。好建议。解决了这个问题。我会把这件事再公开一点,因为我很好奇是否有办法真正检查我在原始帖子中提到的内容。我没有想到这一点。好建议。解决了这个问题。我会把这个问题留一点时间,因为我很好奇是否有办法真正检查我在原始帖子中提到的内容。也许这个问题可以帮助你:非常接近。但是,我的问题是这个特定的模板是从TemplateView调用的。在这种情况下,请求不会传递到模板,也无法通过模板获取URL。也许这个问题可以帮助您:非常接近。但是,我的问题是这个特定的模板是从TemplateView调用的。在这种情况下,请求不会传递给模板,也无法通过模板获取URL。