【问题标题】:If statement that will affect the front page of the website?如果声明会影响网站的首页?
【发布时间】:2016-08-19 02:20:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: django if-statement django-templates frontpage


    【解决方案1】:

    您可以像这样动态地将 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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 2020-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多