python - form.validate_on_submit() 不起作用(提交表单时没有任何反应)
问题描述
我正在为社交媒体网站创建发布博客功能,但遇到了一个问题:当我点击“发布”按钮(在 create_post.html 上)时,什么也没有发生。
在我的 blog_posts/views.py 中,当 form.validate_on_submit() 时,应该保存用户填写的数据,然后他或她将通过路由重定向到 index.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(database) 代码,以防您需要了解一些信息:
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}"
这是我单击发布按钮时的终端: Ps/ 在我查看了我的代码之后,我认为很有可能我没有将我的视图与我的数据库(BlogPost.db.Model)连接起来。我是一名学生,学校里没有人可以帮助我(即使是我的计算机科学老师)。如果你能帮助我,我将不胜感激!!谢谢!!
如果您需要更多信息,请问我!
解决方案
我解决了这个错误!!!!!!!!!!{{form.problem_submit.label(class="btn btn-secondary")}} 应该是 {{form.problem_submit(class="btn btn-secondary")}}
推荐阅读
- sql - 从特定列中找到最大值,然后按它们分组
- reactjs - 反应 redux 渲染数据
- mongodb - Mongoose Model.UpdateMany 不是 pre hook 上的函数错误,这适用于类似的模式和解析器
- c - 在树中搜索数字
- javascript - 从对象初始化 Typescript 类的最佳实践 (Object.assign)
- r - 使用列表时将国家假期添加到先知模型
- ios - 在 iOS 应用程序中创建帐户原型时遇到问题
- python - 如何使包含 Tkinter Checkboxes 的循环适用于调用函数中复选框的每个不同实例?
- php - 我需要帮助来解决嵌套的 FORM 问题
- php - 在 WooCommerce 电子邮件模板上使用的简码中传递订单 ID