jinja2.exceptions.UndefinedError:“super”未定义

2024-05-29 07:45:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在自己的机器上执行一本书中的示例,但它给出了一个错误

jinja2.exceptions.UndefinedError: 'super' is undefined

这特别发生在我作为模板创建的user.html页面上。如果我不尝试继承父页面,一切都正常。只要我使用

{% extends "bootstrap/base.html" %}

我得到了错误和500的回复

from flask import Flask, render_template
from flask_bootstrap import Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/user/<name>') 
def user(name):
    return render_template('user.html', name=name)

index.html和user.html(加载引导程序时出现问题的那一个)

#user.html
{% extends 'bootstrap/base.html' %}
{% block head %}
<h1>Hi {{ name }}</h1>
{% endblock %}

#index.html
<h1>Hello World</h1>
127.0.0.1 - - [28/Feb/2020 23:57:29] "GET / HTTP/1.1" 200 -
[2020-02-28 23:57:33,646] ERROR in app: Exception on /user/salman [GET]
Traceback (most recent call last):
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/salman/Documents/projects/flasky/hello.py", line 14, in user
    return render_template('user.html', name=name)
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/templating.py", line 140, in render_template
    ctx.app,
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask/templating.py", line 120, in _render
    rv = template.render(context)
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/jinja2/environment.py", line 1090, in render
    self.environment.handle_exception()
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/jinja2/environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/jinja2/_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "/home/salman/Documents/projects/flasky/templates/user.html", line 1, in top-level template code
    {% extends 'bootstrap/base.html' %}
  File "/home/salman/Documents/projects/flasky/venv/lib/python3.6/site-packages/flask_bootstrap/templates/bootstrap/base.html", line 24, in top-level template code
    {%- endblock content %}
jinja2.exceptions.UndefinedError: 'super' is undefined

Tags: inapphomevenvlibpackageshtmlline
1条回答
网友
1楼 · 发布于 2024-05-29 07:45:14

您需要实现super()函数来呈现父块的内容并返回父块的结果(例如:

{% block head %}
{{ super() }}
<title> Hi {{ name }}</title>
{% endblock %}

事实上,我不能产生您得到的错误,可能是您使用了多模板继承

相关问题 更多 >

    热门问题