我迷失了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)我认为是,但整个结构是否有缺陷?
答案 0 :(得分:0)
你肯定必须注意到这些界限:
@app.route(...)
你的代码中的。他们定义路线。你有两个处理程序指向&#34; /&#34;,而大概你希望驱动程序处理程序指向&#34; / drivers&#34;:所以改变你传递给{{1}的参数}。
另外,你不应该考虑HTML页面,而且你不应该试图给你的路线&#34; .html&#34;后缀。只需使用&#34; drivers&#34;,然后导航到myapp.heroku.com/drivers。
最后,没有必要上传到Heroku来测试它:只需运行本地开发服务器。请注意,所有这些都在Flask文档中有详细描述;你应该读它们。