2016-12-30 13 views
-2

私のフラスコアプリはfor()ブロックの 'no content'を出力しています。Flask Appはapp.pyをロードしません(提供されたファイル/パスは存在しません)

私はここで、app.pyで私のクエリをテストしたがapp.pyです:

# mysql config 
app.config['MYSQL_DATABASE_USER'] = 'user' 
app.config['MYSQL_DATABASE_PASSWORD'] = 'mypass' 
app.config['MYSQL_DATABASE_DB'] = 'mydbname' 
app.config['MYSQL_DATABASE_HOST'] = 'xxx.xxx.xxx.xxx' 
mysql = MySQL() 
mysql.init_app(app) 
c = mysql.connect().cursor() 
blogposts = c.execute("SELECT post_title, post_name FROM mydbname.wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3") 

@app.route('/', methods=('GET', 'POST')) 
def email(): 
    form = EmailForm() 

    if request.method == 'POST': 
     if form.validate() == False: 
      return 'Please fill in all fields <p><a href="/">Try Again</a></p>' 
     else: 
      msg = Message("Message from your visitor", 
          sender='[email protected]', 
          recipients=['[email protected]']) 
      msg.body = """ 
      From: %s 
      """ % (form.email.data) 
      mail.send(msg) 
      #return "Successfully sent message!" 
      return render_template('email_submit_thankyou.html') 
    elif request.method == 'GET': 
     return render_template('index.html', blogposts) 

これは私のapp.pyがどのように見えるかです。以下は

templates/の私index.htmlです:

<ul> 
     {% for blogpost in blogposts %} 
     <li><a href="{{blogpost[1]}}">{{blogpost[0]}}</a></li> 
     {% else %} 
     <li>no content...</li> 
     {% endfor %} 
     <div class="clearL"> </div> 
    </ul> 

私は、クエリをチェックし、それは次のように所望の出力を返します:私はexport FLASK APP=app.py', thenフラスコの実行を実行してのdevのサーバーを再起動しようとした場合

ID post_title  post_name 
1 a title here  a-title-here 
2 a title here2  a-title-here2 
3 a title here3  a-title-here3 

`、私は次のエラーを受け取ります:

Error: The file/path provided (app) does not appear to exist. Please verify the path is correct. If app is not on PYTHONPATH, ensure the extension is .py 

export FLASK_APP=app.pyからpython -m flask runで実行しようとしました。これも同じエラーが発生します。

解決方法についての考え方はありますか?

答えて

1

テンプレートにはblogpostsという名前のものはありません。あなたがデータを渡すためにキーワード引数を使用する必要があります。

return render_template('index.html', blogposts=blogposts) 

また、それ以外の場合にのみ、これまでのプロセスの起動時に実行され、あなたは常に同じ3つの柱があるでしょう、あなたが本当に関数内でそのクエリを行う必要があります注意してください。

+0

偉大なポストを実行する必要があります私は、エクスポートを実行したとき、私は 'エラーを取得していますFLASK_APP = app.py'を実行した後、 'フラスコを走らせる' 'エラー:ファイル/パスの提供(アプリケーション)が存在しないようです 'というエラーが表示されますか? – Jshee

+0

申し訳ありませんが、私はその質問を理解していません。あなたは明らかにそれを前に走らせました、何が変わったのですか? –

+0

私は知っていますが、これを変更した後、 'blogposts = blogposts'がこれを開始しました。 'export FLASK_APP = app.py'を実行し、次に' localhost 'で実行するために 'flask run'を実行すると、エラーが返されます。 – Jshee

0

同じ問題がありました。私はapp.pyを含むフォルダに端末の変更ディレクトリとしてそれを解決してから、その後

export FLASK_APP=app.py 

を実行して、あなたは

python -m flask run 
関連する問題