jinja2.exceptions.TemplateAssertionError: block 'title' defined twice
{% block content %}<div class="container"> {% for message in get_flashed_messages() %} <div class="alert alert-warning"> <button type="button" class="close" data-dismiss="alert">×</button> {{ message }} </div> {% endfor %} {% block page_content %}{% endblock %}</div>{% endblock %}{% extends "base1.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block page_content %}<div class="page-header"> <h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1></div>{{ wtf.quick_form(form) }}{% endblock %}from flask_wtf import FlaskFormfrom wtforms import StringField, SubmitFieldfrom wtforms.validators import DataRequiredfrom flask import Flask, render_template, session, redirect,url_for# from collections.abc import Sequence# import _collections_abc# from typing import Any, Mappingapp=Flask(__name__)# bootstrap=Bootstrap(app)app.config["SECRET_KEY"] = "123456"class NameForm(FlaskForm): name = StringField('What is your name?', validators=[DataRequired()]) submit = SubmitField('Submit')@app.route("/",methods=["GET", "POST"])def index(): name=None form = NameForm() if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index1.html', form=form, name=name) # old_name=session.get("name") # if old_name is not None and old_name !=form.name.date: # flash("看看你输入的什么") # session["name"] = form_name_data # return redirect(url_for("index")) # return render_template("index1.html",form = form, name = session.get("name"))if __name__=="__main__": app.run(debug=True)
运行后报错,根据错误提示,我查找了代码中的block 'title',并没有被定义两次,然而还是报错,我就删除了代码中唯一的一处block 'title',还是报错。
在你提供的代码片段中,并没有直接定义名为 title
的 block
。错误信息 jinja2.exceptions.TemplateAssertionError: block 'title' defined twice
指的是在继承链中的某个模板里 title
块被定义了两次,而不是在你的 index1.html
模板中直接定义了两次。
问题可能出在 base1.html
这个模板中,因为你在 index1.html
中使用了 {% extends "base1.html" %}
来继承它。base1.html
模板(虽然你没有在代码中提供)可能包含了两次 title
块的定义。
要解决这个问题,你需要做以下几步:
base1.html
模板:确保在 base1.html
模板中 title
块只被定义了一次。base1.html
模板又继承了其他模板,确保那些模板也没有重复定义 title
块。{% include %}
)时,如果那些模板也定义了 title
块,也可能导致这个问题。如果你确认 base1.html
和所有相关的模板中 title
块只被定义了一次,但问题依旧存在,请确保你的开发环境没有缓存旧版本的模板文件,并且你正在查看和编辑的是正确的模板文件。
如果问题依然没有解决,你可能需要提供更完整的 base1.html
模板代码,以便进行更深入的分析。在没有 base1.html
的完整内容的情况下,无法给出更具体的解决方案。
问题内容: 我从Flask的Jinja2模板提供动态页面。现在,我在脚本标签内定义客户端模板,例如Jinja2克隆Nunjucks。问题是,客户端模板具有类似语法该Flask’s的 Jinja2的解释,而不是可以解释渲染的逐字。 如何使整个脚本块逐字呈现? 问题答案: 你可以禁用块内标签的解释:
问题内容: 我正在为Flask和SQLAlchemy构建管理员,并且我想使用来将用于不同输入的HTML传递给我的视图。模板框架似乎会自动转义html,因此所有<“’>都将转换为html实体。如何禁用它以使HTML正确呈现? 问题答案: 理想的方法是 而不是完全关闭自动转义。
问题内容: 我正在为构建管理员,并且我想使用来将用于不同输入的HTML传递给我的视图。模板框架似乎会自动转义,因此所有都将转换为html实体。如何禁用它以使HTML正确呈现? 问题答案: 理想的方法是 而不是完全关闭自动转义。
问题内容: 给定我有两个变量,它们的值分别为“ test”和“ test”。在jinja2中,当我尝试使用if比较它们时,没有任何显示。我做如下比较: 我得到的输出怎么了,我该如何比较? 问题答案: 只需使用诸如或https://stackoverflow.com/a/19993378/1232796的过滤器 在你的情况下,你想做
问题内容: 我使用flask,当我调用此URL时出现此错误:这是我的登录方法: 和回溯: 我绝对确定login.html是否存在()。为什么会发生这种情况? 问题答案: 你将模板放在错误的位置。从Flask文档中: Flask将在模板文件夹中查找模板。因此,如果你的应用程序是一个模块,则该文件夹位于该模块旁边,如果它是一个包,则它实际上位于你的包内
下面是index.html 它们在不同的文件夹中,但pathing应该工作,除非我只是错过了一些真正愚蠢的东西。