Я создаю приложение для блога. Я создал регистрационную форму с методом post, который запрашивает детали. На маршруте фляги я пытаюсь проверить, правильно ли проверяет моя форма или нет. Чтобы добиться этого, я создал оператор if и, когда условие выполняется, я пытаюсь перенаправить на домашний маршрут. Которого не происходит. Я не уверен, в чем здесь проблема. Но я вижу, что в сообщении указан код состояния 200.
Я пытался что-то напечатать, но ничего не печаталось. Я пытался удалить метод из файла html, я пытался повторить маршрут реестра. Я предполагаю, что сама проверка не происходит.
#home route
@app.route('/')
@app.route('/home')
def home():
return render_template('home.html', posts=posts, title="Home")
# register route
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
#flash(f'Account created for {form.username.data}!', 'success')
print("Account creation success")
return redirect(url_for('home')) # function name for the route.
return render_template('register.html', title="Register", form=form)
# forms.py file
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired,length, Email,EqualTo
class RegistrationForm(FlaskForm):
username= StringField('Username',validators=[
DataRequired(),
length(min=2, max=20)
])
email= StringField('Email',validators=[
DataRequired(), Email()
])
password= PasswordField( 'Password', validators=[DataRequired()])
confirmPassword = PasswordField('Confirm Password', validators=[DataRequired(),EqualTo(password)])
submit= SubmitField("Sign Up")
<!--This is layout.html which is parent for the home page-->
<div class="col-md-8">
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="alert alert-{{category}}">
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endwith%}
{% block content %}{% endblock content%}
</div>
<!--This is register.html which will render the form -->
{% extends "layout.html" %}
{% block content %}
<div class="content-section">
<form method="POST" action="">
<!--adds cross site request forgery token. Needed for secuity.-->
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Join Today</legend>
<div class="form-group">
{{ form.username.label(class="form-control-label") }}
{{ form.username(class="form-control form-control-lg") }}
</div>
<div class="form-group">
{{ form.email.label(class="form-control-label") }}
{{ form.email(class="form-control form-control-lg") }}
</div>
<div class="form-group">
{{ form.password.label(class="form-control-label") }}
{{ form.password(class="form-control form-control-lg") }}
</div>
<div class="form-group">
{{ form.confirmPassword.label(class="form-control-label") }}
{{ form.confirmPassword(class="form-control form-control-lg") }}
</div>
</fieldset>
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
<div class="border-top pt-3">
<small class="text-muted">
<!-- url_for() uses the name of the route function -->
Already Have an account? <a class="ml-2" href="{{ url_for('register') }}" >Sign In</a>
</small>
</div>
{% endblock content %}
Ожидаемый результат -страница должна перенаправлять на home.html, но по какой-то причине она остается в register.html и сообщений об ошибках нет. Я даже получаю 200 кодов статуса для почтовой операции.