2

我正在使用 Django。
我有一个客户需要一个白色的容器框来隐藏他们 django 网站每个页面上的内容,除了主页。我是 django 的新手,所以我不知道有什么方法可以做到这一点。

我知道在 Wordpress 上有一个 if 语句可以按照我正在寻找的内容做一些事情:?php is_front_page(); ?

django中有什么可以做类似的事情吗?我只需要一种将 CSS 类添加到元素的方法,然后从网站主页中排除该样式。

4

2 回答 2

0

这种逻辑属于模板标签。您可以编写自己的模板标签来检查当前页面的 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/

于 2016-04-25T16:25:35.577 回答
0

您可以像这样动态地将 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>
于 2016-04-25T15:35:03.480 回答