Я работаю над приложением Flask, в котором сотрудники могут генерировать коды классов. Я настроил форму для отправки кодов классов (включая описание), но не могу сгенерировать код класса. Вот краткое описание проблемы:
Что происходит:
Форма не отправляется правильно, когда я пытаюсь создать код класса.
Я не вижу сообщений об ошибках, но код класса не сохраняется в базе данных.
Я' Проверили базу данных, новых записей не добавляется.
Я использую Flask-WTF для обработки форм и Flask-SQLAlchemy для взаимодействия с базой данных.
class EmployeeForm(FlaskForm):
code = StringField(
'Class Code',
validators=[DataRequired(), Length(max=20, message="Code must be 20 characters or less.")],
)
description = StringField(
'Description',
validators=[DataRequired(), Length(max=255, message="Description must be 255 characters or less.")],
)
submit = SubmitField('Generate Code')
Что я могу упустить или какие дополнительные шаги по отладке я могу предпринять, чтобы устранить эту неполадку?
Заранее спасибо за помощь!
Что сделал Пробуете?
Проверка формы:
< li>Я проверил, возвращает ли form.validate_on_submit() True, добавив оператор отладочной печати. Кажется, форма не проходит проверку должным образом, но я не знаю почему.
< strong>Токен CSRF:
Я подтвердил, что токен CSRF включен в форму, с помощью {{ form.hidden_tag() }} в HTML.
Запрос к базе данных:
Я проверил наличие повторяющихся кодов классов с помощью ClassCode.query.filter_by(code =код).первый(). Я также распечатал результат, и похоже, что он не обнаруживает дубликатов даже для существующих кодов.
Обновления базы данных:
Я проверил базу данных, но после отправки формы новые записи ClassCode не добавляются.< /li>
Я работаю над приложением Flask, в котором сотрудники могут генерировать коды классов. Я настроил форму для отправки кодов классов (включая описание), но не могу сгенерировать код класса. Вот краткое описание проблемы: Что происходит: [list] [*]Форма не отправляется правильно, когда я пытаюсь создать код класса. [*]Я не вижу сообщений об ошибках, но код класса не сохраняется в базе данных. [*]Я' Проверили базу данных, новых записей не добавляется. [*]Я использую Flask-WTF для обработки форм и Flask-SQLAlchemy для взаимодействия с базой данных. [/list] Код: [b]Маршрут:[/b] [code]@main.route('/employee/dashboard', methods=['GET', 'POST']) @login_required def employee_dashboard(): if current_user.role != 'employee': flash('You must be an employee to access this page.', 'danger') return redirect(url_for('main.dashboard'))
form = EmployeeForm() class_codes = ClassCode.query.order_by(ClassCode.created_at.desc()).all()
if form.validate_on_submit(): code = form.code.data description = form.description.data
def __repr__(self): return f'' [/code] [b]Форма:[/b] [code]class EmployeeForm(FlaskForm): code = StringField( 'Class Code', validators=[DataRequired(), Length(max=20, message="Code must be 20 characters or less.")], ) description = StringField( 'Description', validators=[DataRequired(), Length(max=255, message="Description must be 255 characters or less.")], ) submit = SubmitField('Generate Code') [/code] [b]HTML:[/b] [code]{% extends 'base.html' %}
{% block content %}
Employee Dashboard
{{ form.hidden_tag() }}
Class Code:
{{ form.code(class="form-control") }}
Description:
{{ form.description(class="form-control") }}
{{ form.submit.label }}
Generated Class Codes [list] {% for code in class_codes %} [*] {{ code.code }} - {{ code.description }} {{ code.created_at.strftime('%Y-%m-%d') }}
{% endfor %} [/list]
{% endblock %}
[/code] Вопрос: [list] [*]Почему форма не отправляется корректно? [*] Почему код класса не сохраняется в базе данных? [*]Что я могу упустить или какие дополнительные шаги по отладке я могу предпринять, чтобы устранить эту неполадку?
Заранее спасибо за помощь! Что сделал Пробуете? [list] [*][b]Проверка формы:[/b]
< li>Я проверил, возвращает ли form.validate_on_submit() True, добавив оператор отладочной печати. Кажется, форма не проходит проверку должным образом, но я не знаю почему. [/list]
[*]< strong>Токен CSRF: [list] Я подтвердил, что токен CSRF включен в форму, с помощью {{ form.hidden_tag() }} в HTML. [/list]
[*][b]Запрос к базе данных:[/b] [list] Я проверил наличие повторяющихся кодов классов с помощью ClassCode.query.filter_by(code =код).первый(). Я также распечатал результат, и похоже, что он не обнаруживает дубликатов даже для существующих кодов. [/list]
[*] [b]Обновления базы данных:[/b] [list] Я проверил базу данных, но после отправки формы новые записи ClassCode не добавляются.< /li> [/list]
[*][b]Ведение журнала Ошибки:[/b] [list] Я включил отладку Flask ([code]app.debug = True[/code]) и поискал ошибки в консоли, но, похоже, все в порядке. [/list]
[*] [b]Поведение перенаправления:[/b] [list] Я ожидал, что форма перенаправит обратно на панель управления ([code]return redirect(url_for('main.employee_dashboard'))[/code]) после успешной генерации кода класса, но страница остается прежней и флэш-сообщения не отображаются. [/list]
< /ol> Чего вы ожидали? [list] [*]После заполнения формы и нажатия кнопки «Сгенерировать код» я ожидал, что следующее:
Данные формы (код класса и описание) пройдет проверку. [*]Новая запись ClassCode будет сохранена в базе данных. [*]Если существует повторяющийся код класса, Я ожидал мгновенного сообщения ([code]'Class code already exists!'[/code]). [*]Если код класса был успешно сохранен, я ожидал увидеть всплывающее сообщение об успехе ([code]'Class code generated successfully!'[/code]) и новый код класса, отображаемый в списке ниже. [*]Страница обновится, и новый код класса будет виден в списке сгенерированных кодов классов.[/list]