form.validate_on_submit () не работает (ничего не происходит, когда я отправляю форму) - PullRequest
0 голосов
/ 21 марта 2020

Я создаю функцию публикации блога для веб-сайта социальных сетей, и у меня возникает проблема: когда я нажимаю кнопку «Опубликовать» (на create_post. html), ничего не происходит.

В моем blog_posts / views.py, когда form.validate_on_submit (), данные, заполненные пользователями, должны быть сохранены, а затем он или она будут перенаправлены по маршруту к индексу. html.

Однако, запустив сайт, ничего не произошло. Как ни странно, ошибки не произошло.

Вот код для моего blog_post / views.py:

@blog_posts.route('/create', methods=['GET', 'POST'])
@login_required
def create_post():
    form = BlogPostForm()

    if form.validate_on_submit():

        blog_validated = BlogPost(problem_name=form.problem_name.data,
                                  text=form.text.data,
                                  user_id=current_user.id
                                  )
        db.session.add(blog_validated)
        db.session.commit()
        flash('Blog Post Created')
        return redirect(url_for('core.index'))

    return render_template('create_post.html', form=form)

Вот мой код для моего forms.py, который имеет форму, которую я использую для моего шаблона (create_post. html):

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, TextAreaField
from wtforms.validators import DataRequired

class BlogPostForm(FlaskForm):
    problem_name = StringField('Problem Name', validators=[DataRequired()])
    text = TextAreaField('Text', validators=[DataRequired()])
    problem_submit = SubmitField("Post")

Вот мой код для шаблона (create_post. html):

{% extends "base.html" %}

{% block content %}
<div class="container">
<form method="POST" >
    {{ form.hidden_tag() }}
    {{ form.problem_name.label(class="form-control-label") }} {{ form.problem_name(class="form-group form-control") }}<br>
    {{ form.text.label }} {{ form.text(class="form-group form-control") }}<br>
    {{ form.problem_submit.label(class="btn btn-secondary")}}
</form>
</div>
{% endblock %}

Вот мой код для моего model.py (база данных), если вам нужно что-то знать:

class BlogPost(db.Model):

    users = db.relationship(User)

    blog_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,db.ForeignKey('users.id'), nullable=False) #users.id  is taken from the tablename(users) and id in its table
    date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)  #Automatically post the time of the post
    problem_name = db.Column(db.String(140), nullable=False)
    text = db.Column(db.Text, nullable=False)

    def __init__(self, text, problem_name, user_id):
        self.text = text
        self.problem_name = problem_name
        self.user_id = user_id

    def __repr__(self):
        return f"Post ID: {self.post_id} -- Date:{self.date}---{self.problem_name}"

Это терминал, когда я нажимаю кнопку отправки сообщения: Terminal when click the button Ps / После того, как я посмотрел свой код Я думаю, что есть большая вероятность, что я не связал свои взгляды с моей базой данных (BlogPost.db.Model). Я ученик, и никто в моей школе не может мне помочь (даже мой учитель информатики). Если бы вы могли помочь мне, я был бы очень признателен! Спасибо !!

И если вам нужна дополнительная информация, пожалуйста, спросите меня!

1 Ответ

0 голосов
/ 21 марта 2020

Я решил ошибку !!!!!!!! {{form.problem_submit.label (class = "btn btn-вторичный")}} должен был быть {{form.problem_submit (class = "btn btn-вторичный")}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...