Jinja2.Exceptions.UndefineError: «форма» — это неопределенная ошибка при рендеринге шаблона с помощью Flask и Flask-WTFPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Jinja2.Exceptions.UndefineError: «форма» — это неопределенная ошибка при рендеринге шаблона с помощью Flask и Flask-WTF

Сообщение Anonymous »

Я работаю над приложением Flask и столкнулся с ошибкой при попытке отобразить шаблон Teacher_dashboard.html. Ошибка возникает при попытке отобразить токен CSRF в шаблоне с помощью {{ form.csrf_token }}.
Вот сообщение об ошибке, которое я получаю:

Код: Выделить всё

ERROR:school_hub:Exception on /dashboard [GET]
Traceback (most recent call last):
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask_login/utils.py", line 290, in decorated_view
return current_app.ensure_sync(func)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/school_hub/routes.py", line 76, in dashboard
return render_template('teacher_dashboard.html')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1304, in render
self.environment.handle_exception()
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 939, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/misbahskuy/Desktop/school_hub/school_hub/templates/teacher_dashboard.html", line 78, in top-level template code
{{ form.csrf_token }}  
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/misbahskuy/Desktop/school_hub/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 487, in getattr
return getattr(obj, attribute)
^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'form' is undefined
Контекст:
  • Я использую Flask-WTF для обработки форм и защиты CSRF.
  • Шаблон Teacher_dashboard.html ожидает объект формы, но я получаю сообщение об ошибке: форма не определена.
  • В моем Dashboard маршрут, я отображаю шаблон без передачи объекта формы явно. Однако шаблон содержит {{ form.csrf_token() }} для включения токена CSRF в форму.
Вот код для маршрут в маршрутах.py:

Код: Выделить всё

@main.route('/dashboard', methods=['GET', 'POST'])
@login_required
def dashboard():
return render_template('teacher_dashboard.html')
Что я пробовал:
  • Я пробовал добавить объект формы в render_template вызовите функцию следующим образом:

Код: Выделить всё

form = SomeFormClass()
return render_template('teacher_dashboard.html', form=form)
Однако я все равно получаю ту же ошибку. Я не уверен, что я что-то упустил или возникла проблема с передачей объекта формы.
Может ли кто-нибудь помочь мне понять, что может пойти не так, и как это исправить?
Что я пробовал:
  • Передача формы явно в render_template:

    Я пробовал явно передать объект формы в шаблон, создав экземпляр формы на панели управления следующим образом:

    Код: Выделить всё

    form = SomeFormClass()
    return render_template('teacher_dashboard.html', form=form)
    
    Однако это не устранило ошибку, и я все еще сталкивался с той же проблемой (

    Код: Выделить всё

    'form' is undefined
    ).

    Проверка шаблона на предмет использования формы:

    I проверил, что шаблон Teacher_dashboard.html правильно использует form.csrf_token, поскольку я ожидал, что объект формы будет доступен в контексте шаблона при рендеринге.
Чего я ожидал:
Я ожидал, что передача объекта формы явно в шаблон разрешит ошибку jinja2.Exceptions.UndefineError с помощью делая объект формы доступным в шаблоне, позволяя правильно отображать токен CSRF.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ring-templ
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Скрипт запускается дважды при рендеринге шаблона jinja2?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ошибка в приложении Machine Learning Flask — jinja2.Exceptions.TemplateNotFound: index.html
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Ошибка в приложении Machine Learning Flask — jinja2.Exceptions.TemplateNotFound: index.html
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ошибка в приложении Machine Learning Flask — jinja2.Exceptions.TemplateNotFound: index.html
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Ошибка в приложении Machine Learning Flask — jinja2.Exceptions.TemplateNotFound: index.html
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»