【问题标题】:Flask App will not load app.py (The file/path provided (app) does not appear to exist)Flask App 不会加载 app.py(提供的文件/路径(app)似乎不存在)
【发布时间】:2016-12-30 22:27:50
【问题描述】:

我的烧瓶应用程序正在为 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.htmltemplates/

    <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', thenflask run` 来重新启动开发服务器,我会收到以下错误:

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 运行 - 这也给出了同样的错误。

思考如何解决?

【问题讨论】:

    标签: python mysql flask


    【解决方案1】:

    您的模板中没有任何名为blogposts 的内容。您需要使用关键字参数来传递数据:

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

    还请注意,您确实应该在函数内部执行该查询,否则它只会在进程启动时执行,并且您将始终拥有相同的三个帖子。

    【讨论】:

    • 好帖子,当我运行 export FLASK_APP=app.py 时出现错误,然后 flask run 它给了我 Error: The file/path provided (app) does not appear to exist 想法的错误?
    • 对不起,我不明白这个问题。显然你之前已经运行过了,有什么变化?
    • 我知道,但是在我改变这个添加blogposts=blogposts 之后它开始了这个。重申一下,当我运行 export FLASK_APP=app.py 然后 flask run 在我的本地主机上运行它时,它给了我这个错误
    • 再次感谢您的帮助@Daniel - 请查看更新。
    【解决方案2】:

    我有同样的问题。我将其解决为将终端的目录更改为包含 app.py 的文件夹,然后运行

    export FLASK_APP=app.py
    

    那么,你应该运行

    python -m flask run
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-14
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2015-12-15
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多