我正在使用Django 我有一个客户端需要一个白色的容器盒,除了在主页上之外,还要在他们的django网站的每个页面上的内容后面。我是django的新手,所以我不知道有什么方法可以做到这一点。
我知道在Wordpress上有一个if语句可以按照我正在寻找的方式做一些事情:?php is_front_page(); ?
django中有什么可以做类似的事吗?我只需要一种方法将css类添加到元素中,然后从网站的主页中排除该样式。
答案 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/