每次我上傳帖子時,它都會在除日期和 id 之外的所有列中發布一行空值,然后添加第二行,并在每列中放置正確的資訊。SQLite 資料看起來像這樣。使用 SQL-alchemy、flask-login、wtf-forms、flask-bootstrap、werkzeug。
id title content posting_user date_posted
1 null null jack 2021-11-01
2 adad test jack 2021-11-01
崗位模型
class Posts(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50))
content = db.Column(db.Text)
posting_user = db.Column(db.String(255))
date_posted = db.Column(db.String(50))
class Postform(FlaskForm):
title = StringField('Title', validators=[InputRequired(), Length(min = 3, max = 50)])
content = StringField('Content', validators=[InputRequired()], widget=TextArea())
HTML 塊
<div class="container">
<div class="row">
<div class="col-md-4 offset-md-4">
<div class="login-form bg-light mt-4 p-4">
<form action="" method="POST" class="row g-3">
<h4>Add a Post</h4>
{{ form.hidden_tag()}}
{{ form.title(placeholder = "Title") }}
{{ form.content(cols="30", rows="15", placeholder = "Write your review here") }}
<div class="col-12">
<button type="submit" name = "post_submit" class="btn btn-dark float-end">Post</button>
</div>
</form>
</div>
</div>
</div>
</div>
應用程式
@app.route('/dashboard/post', methods = ["POST", "GET"])
@login_required
def post():
form = Postform()
posting = Posts(title = form.title.data, content = form.content.data, posting_user = current_user.username, date_posted = datetime.datetime.now().date())
if posting.title != None and posting.content != None:
db.session.add(posting)
db.session.commit()
flash('Your post has been added', 'posted')
return render_template("post.html", form = form, loggedin = current_user.is_active)
uj5u.com熱心網友回復:
您可能會在表單仍為空的 POST 請求之前發送 GET 請求。您可以區分請求方法來控制行為。
@app.route('/dashboard/post', methods = ["POST", "GET"])
@login_required
def post():
form = Postform()
# Validate whether the request method is post and the entries are correct!
if form.validate_on_submit():
posting = Posts(title = form.title.data, content = form.content.data, posting_user = current_user.username, date_posted = datetime.datetime.now().date())
db.session.add(posting)
db.session.commit()
flash('Your post has been added', 'posted')
return render_template("post.html", form = form, loggedin = current_user.is_active)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/349234.html
