无法在python Flask应用程序中向SQL db添加注释

时间:2016-04-08 06:53:06

标签: python sql forms flask flask-sqlalchemy

我是编程新手,并在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>

提前多多感谢!

2 个答案:

答案 0 :(得分:2)

目前,表单中的action="."实际指向当前目录的根目录,/post恰好只是/,因此指向index

最好使用action="{{ url_for('your_target_view') }}"代替。

答案 1 :(得分:0)

摆脱action=".",您可以使用action=""