【问题标题】:jinja2.exceptions.TemplateSyntaxError: expected token 'end of print statement', got 'dark'jinja2.exceptions.TemplateSyntaxError:预期的标记“打印语句结束”,变“暗”
【发布时间】:2022-01-15 15:08:30
【问题描述】:

我是编程新手。我不明白为什么会出现这个错误。为什么在“黑暗”中出现错误。 <header id="header" class='{% if nav_style == "Light Version" %}{{ full-header }}{% endif %} {% if nav_style == "Dark Version" %}{{ full-header dark }}{% endif %} {% if nav_style == "Transparent" %}{{ transparent-header dark }}{% endif %} {% if nav_style == "Semi Transparent Light Version" %}{{ full-header transparent-header semi-transparent }}{% endif %} {% if nav_style == "Semi Transparent Dark Version" %}{{ full-header transparent-header semi-transparent dark }}{% endif %} {% if nav_style == "Floating Version" %}{{ full-header transparent-header floating-header }}{% endif %} {% if nav_style == "Static Sticky "%}{{ full-header }}{% endif %} {% if nav_style == "Responsive Sticky" %}{{ full-header }}{% endif %}' {% if nav_style == "Static Sticky" %}data-sticky-shrink="false"{% endif %} {% if nav_style == "Responsive Sticky" %}data-mobile-sticky="true"{% endif %} >

【问题讨论】:

  • 请以可读的格式提供您的代码。

标签: python jinja2 frappe


【解决方案1】:

当您使用{{ varname }} 语法时,Jinja2 期望varname 是一个有效的变量名,您将其作为上下文变量传递给渲染函数。在渲染期间,Jinja2 将用varname 的值替换这个术语。但是在您的模板中,您只需根据nav_style 的值选择一些类名,它们是简单的字符串。所以你不必使用{{ ... }} 语法,因为它们不是变量,而是模板中的简单字符串。所以这样的事情应该可以工作:

<header id="header"
    class='{% if nav_style == "Light Version" %} full-header {% endif %} 
        {% if nav_style == "Dark Version" %} full-header dark {% endif %} 
        {% if nav_style == "Transparent" %} transparent-header dark {% endif %} 
        {% if nav_style == "Semi Transparent Light Version" %} full-header transparent-header semi-transparent {% endif %} 
        {% if nav_style == "Semi Transparent Dark Version" %} full-header transparent-header semi-transparent dark {% endif %} 
        {% if nav_style == "Floating Version" %} full-header transparent-header floating-header {% endif %} 
        {% if nav_style == "Static Sticky "%} full-header {% endif %} 
        {% if nav_style == "Responsive Sticky" %} full-header {% endif %}'
    {% if nav_style=="Static Sticky" %}data-sticky-shrink="false" {% endif %} 
    {% if nav_style=="Responsive Sticky" %}data-mobile-sticky="true" {% endif %}>

但是这个模板里面的逻辑太多了,很难阅读和调试。您应该将此逻辑放在视图函数中,并将选定的类名作为简单变量传递,例如nav_style_classes:

<header id="header" class="{{ nav_style_classes }}" 
    {% if nav_style=="Static Sticky"%}data-sticky-shrink="false" {% endif %} 
    {% if nav_style=="Responsive Sticky" %}data-mobile-sticky="true" {% endif %}>

【讨论】:

  • 感谢您的回答。实际上,我在高级帮助下修复了这个错误..
猜你喜欢
  • 1970-01-01
  • 2022-12-18
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多