如何在Django模板中结合if-else使用多block加载不同meta标签
解决Django模板中同名Block重复定义的错误
Django模板系统不允许同一个模板里重复定义同名的block标签,哪怕是在if-else的不同分支里也不行,这就是你遇到TemplateSyntaxError的原因。
正确的做法是把每个block只定义一次,然后在block内部用条件判断输出不同内容:
{% extends 'base.html' %} {% load static %} {% load custom_filters %} {% block meta_keywords %} <meta name="keywords" content="some keywords"> {% endblock %} {% block meta_description %} {% if context.api_name == 'case 1' %} <meta name="description" content="{{ context.json_data | get_key:'2. name' | default:'Unknown' }}"> {% elif context.api_name == "case 2" %} <meta name="description" content="{{ context.json_data | get_key:'name' | default:'Unknown' }}"> {% endif %} {% endblock %}
如果不同场景下meta_keywords的内容也需要区分,同样可以在block内部加条件逻辑:
{% block meta_keywords %} {% if context.api_name == 'case 1' %} <meta name="keywords" content="专属case1的关键词"> {% elif context.api_name == "case 2" %} <meta name="keywords" content="专属case2的关键词"> {% else %} <meta name="keywords" content="默认关键词"> {% endif %} {% endblock %}
内容的提问来源于stack exchange,提问作者JAdel
相关产品推荐
相关产品推荐

