我是编程新手,并在pythonanywhere.com上设置了一个带有评论部分的小网站,大量转发他们的教程。但是当我在表单中发表评论时,评论不会添加到数据库中,并且由于某种原因,程序会将我重定向到索引页面(目的是重定向以保持在同一页面上)
对于我可能做错的任何建议都将不胜感激!
pyhthon代码:
import random
from flask import Flask, request, session, redirect, url_for, render_template, flash
from flask.ext.sqlalchemy import SQLAlchemy
from werkzeug.routing import RequestRedirect
app = Flask(__name__)
app.config["DEBUG"] = True
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
username="username",
password="password",
hostname="hostname",
databasename="majaokholm$majaokholm",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
db = SQLAlchemy(app)
class Comment(db.Model):
__tablename__ = "comments"
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String(4096))
@app.route("/")
def index():
return render_template("index_page.html")
@app.route('/post', methods=["GET", "POST"])
def post():
if request.method == "GET":
return render_template("post_page.html", comments=Comment.query.all())
comment = Comment(content=request.form["contents"])
db.session.add(comment)
db.session.commit()
return redirect(url_for('post'))
和HTML模板中的表单:
<form action="." method="POST">
<textarea class="form-control" name="contents" placeholder="Enter a
comment"></textarea>
<input type="submit" value="Post comment">
</form>
提前多多感谢!
答案 0 :(得分:2)
目前,表单中的action="."
实际指向当前目录的根目录,/post
恰好只是/
,因此指向index
最好使用action="{{ url_for('your_target_view') }}"
代替。
答案 1 :(得分:0)
摆脱action="."
,您可以使用action=""