jinja2.exceptions.UndefinedError: 'super' не определено - PullRequest
0 голосов
/ 28 февраля 2020

Я пытался выполнить пример, который я нашел в книге, на своем собственном компьютере, но он выдает ошибку.

jinja2.exceptions.UndefinedError: 'super' is undefined

Это в частности происходит для пользователя. 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)

Индекс. html и пользователь. html ( тот, у которого проблема с загрузкой bootstrap)

#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

1 Ответ

0 голосов
/ 29 февраля 2020

Вам необходимо реализовать функцию super () , чтобы отобразить содержимое родительского блока и вернуть результат в родительский блок (например):

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

На самом деле я могу вы не получите ошибку, возможно, вы используете несколько шаблонов наследования.

...