我怎样才能使用正确的路由在 Flask 中显示 HTML 页面?

How can I use the correct routing to display an HTML page with Flask?

我迷失了 python 和 flask,因为我不明白路由结构如何在 HTML 页面之间导航。

部署到heroku我的结构是:

/my_app_name/
app.py
config.py
drivers.html
Procfile  
requirements.txt

app.py 文件是:

import os
from flask import Flask, render_template, request, url_for
from flask.ext.sqlalchemy import SQLAlchemy
import json


app = Flask(__name__)
db = SQLAlchemy(app)

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World from Python!'

@app.route('/')
def drivers():
    drivers = db.drivers.select()
    return render_template('drivers.html')
    #return HttpResponse('/drivers.html', json.dumps(result), content_type='application/json')

if __name__ == '__main__':
  app.run(debug=True)

config.py 是:

 SQLALCHEMY_DATABASE_URI = 'heroku_database_uri_string) #connection is OK, no problem here

drivers.html 是:

{% block body %}
  <ul>
  {% for driver in drivers %}
    <li><h2>{{ driver.driver_name }}</h2>
  </ul>
{% endblock %}

当我导航到 myapp.heroku.com/ 时,我得到了 "hello world from pyhton",但是当我导航到 myapp.heroku.com/drivers.html

我收到“404”错误。

那么,2 个问题:

1) 为什么是 404?怎么了?

2) 我想是的,但是整个结构有缺陷吗?

你一定注意到了这几行:

@app.route(...)

在你的代码中。他们定义路线。您有两个指向“/”的处理程序,而您可能希望驱动程序处理程序指向“/drivers”:因此请更改您传递给 route.

的参数

此外,您不应该考虑 HTML 页面,也不应该尝试为您的路线添加“.html”后缀。只需使用 "drivers",然后导航至 myapp.heroku.com/drivers.

最后,无需上传到 Heroku 进行测试:只需 运行 本地开发服务器即可。请注意,所有这些在 Flask 文档中都有详细描述;你应该读一读。