如果声明会影响网站的首页?

时间:2016-04-25 15:27:25

标签: django if-statement django-templates frontpage

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

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

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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/