我的烧瓶应用正在输出“没有内容”#39;对于for()
块,我不知道为什么。
我在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='contact@site.com',
recipients=['contact@site.com'])
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
的样子。
以下是index.html
中的templates/
:
<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>
我检查了查询,然后返回所需的输出,如:
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
如果我尝试通过运行export FLASK APP=app.py', then
flask run`重启dev服务器,我会收到错误:
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
运行 - 这也会出现同样的错误。
关于如何解决的想法?
答案 0 :(得分:1)
您的模板中没有任何名为blogposts
的内容。您需要使用关键字参数来传递数据:
return render_template('index.html', blogposts=blogposts)
另请注意,您应该在函数内部执行该查询,否则它将仅在进程启动时执行,并且您将始终拥有相同的三个帖子。
答案 1 :(得分:0)
我有同样的问题。我解决了它作为终端的更改目录到包含app.py的文件夹,然后运行
export FLASK_APP=app.py
然后,你应该运行
python -m flask run