2015-01-01 38 views
0

我迷失在python和flask中,因为我不明白路由结构如何在HTML页面之间导航。hwo我可以使用正确的路由来显示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世界你好”得很好的,但是当我浏览到myapp.heroku.com/drivers.html

,我收到了“404”的错误。

所以,2个问题:

1)为什么404?哪里不对?

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

非常感谢!

回答

0

你肯定一定已经注意到这些行:

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

。他们定义路线。你有两个处理程序指向“/”,而大概你想让驱动程序处理程序指向“/ drivers”:所以改变你传递给route的参数。

此外,你不应该考虑HTML页面,你不应该试图给你的路线“.html”后缀。只需使用“驱动程序”,并导航到myapp.heroku.com/drivers。

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

+0

感谢这部分帮助我。我已阅读烧瓶文档,但尚未完全理解它们。毫无疑问,我会回来寻求更多帮助! – user1903663

相关问题