2016-04-08 8 views
2

私はプログラミングが初めてでpythonanywhere.comのコメントセクションを持つ小さなウェブサイトをセットアップして、チュートリアルを大々的に中継しています。しかし、フォームにコメントを投稿すると、コメントはデータベースに追加されず、何らかの理由でプログラムがインデックスページにリダイレクトされます(同じページにとどまるようにリダイレクトされます)PythonフラスコのアプリケーションでSQLデータベースにコメントを追加できません

私が間違っていることは、大いに感謝されるでしょう!

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

PSを使用することができます。資格情報に注意してください... – plaes

+0

ちょっと!!!あなたはデータベースの資格情報を明らかにしています。私はあなたのユーザー名とパスワードを見ることができます。 – Adeola

答えて

2

現在、形態のaction="."は実際/postためindexにだけ/したがって点であることを起こるカレントディレクトリのルートを指します。

代わりにaction="{{ url_for('your_target_view') }}"を使用してください。

+0

説明をありがとう! –

0

action="."を取り除く、あなたはaction=""

+0

ありがとう、それは働いた:-) –

関連する問題