我正在使用 Django。
我有一个客户需要一个白色的容器框来隐藏他们 django 网站每个页面上的内容,除了主页。我是 django 的新手,所以我不知道有什么方法可以做到这一点。
我知道在 Wordpress 上有一个 if 语句可以按照我正在寻找的内容做一些事情:?php is_front_page(); ?
django中有什么可以做类似的事情吗?我只需要一种将 CSS 类添加到元素的方法,然后从网站主页中排除该样式。
我正在使用 Django。
我有一个客户需要一个白色的容器框来隐藏他们 django 网站每个页面上的内容,除了主页。我是 django 的新手,所以我不知道有什么方法可以做到这一点。
我知道在 Wordpress 上有一个 if 语句可以按照我正在寻找的内容做一些事情:?php is_front_page(); ?
django中有什么可以做类似的事情吗?我只需要一种将 CSS 类添加到元素的方法,然后从网站主页中排除该样式。
这种逻辑属于模板标签。您可以编写自己的模板标签来检查当前页面的 URL 并返回一些字符串,然后您可以将其用作 div 类来设置 div 的样式。
这是一个完整的例子。在您的一个应用程序中将以下代码添加到例如 templatetags/helpers.py 中:
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def is_homepage(context):
if context.request.path == "/":
return "homepage"
else:
return "not_homepage"
将以下代码添加到您的所有模板中,最好是您在所有其他模板中扩展的基本模板:
{% load helpers %}
...
<div class="{% is_homepage %}">
...
</div>
...
您可以在此处阅读有关自定义模板标签的更多信息: https ://docs.djangoproject.com/en/1.9/howto/custom-template-tags/
您可以像这样动态地将 css 类添加到 HTML 元素中:
context_data
您需要通过dict向您的 HTML 发送一个值,让我们举个例子,我会假设您正在使用基于类的视图。
class MyView(TemplateView):
def get_context_data(self, *args, **kwargs):
context = super(MyView, self).get_context_data(*args, **kwargs)
context.update({'add_class': True})
return context
然后在您的模板中:
...
<div class='someclass {{ if add_class }}someotherclass{{endif}}'></div>