如何使用正确的路由来显示Flask的HTML页面?

时间:2015-01-01 10:41:22

标签: python heroku 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/时,我从pyhton获得了#34; hello world&#34;很好但是当我导航到myapp.heroku.com/drivers.html

我得到了一个&#39; 404&#39;错误。

所以,2个问题:

1)为什么选择404?有什么问题?

2)我认为是,但整个结构是否有缺陷?

1 个答案:

答案 0 :(得分:0)

你肯定必须注意到这些界限:

@app.route(...)
你的代码中的

。他们定义路线。你有两个处理程序指向&#34; /&#34;,而大概你希望驱动程序处理程序指向&#34; / drivers&#34;:所以改变你传递给{{1}的参数}。

另外,你不应该考虑HTML页面,而且你不应该试图给你的路线&#34; .html&#34;后缀。只需使用&#34; drivers&#34;,然后导航到myapp.heroku.com/drivers。

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