Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用正确的路由显示带有Flask的HTML页面?_Python_Heroku_Flask - Fatal编程技术网

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

Python 如何使用正确的路由显示带有Flask的HTML页面?,python,heroku,flask,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 SQLAl

我对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获得hello world,但当我导航到myapp.heroku.com/drivers.html时

我得到一个“404”错误

因此,有两个问题:

1为什么是404?怎么了


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

您一定注意到了以下几行:

@app.route(...)
在你的代码中。它们定义了路线。您有两个处理程序指向/,而您可能希望驱动程序处理程序指向/drivers:所以更改传递给route的参数

此外,您不应该考虑HTML页面,也不应该尝试给routes.HTML后缀。只需使用驱动程序,然后导航到myapp.heroku.com/drivers


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

谢谢,这对我有一定帮助。我已经读过这些文件,但还没有完全理解。毫无疑问,我会回来寻求更多的帮助!