我尝试使用Flask和Python构建一个非常简单的Flask应用程序。没有数据库或其他插件。应用程序在我的本地计算机上运行完全正常,我可以无错误地导航,但是当我部署到Heroku时,我尝试访问的任何页面都会收到404 Not Found错误,包括索引。
这是我网站的布局: Site Layout
mbtaCrTracker.py是我应用的根目录。这是目前的样子:
from mbtaCrTracker import app
from mbtaCrTracker import views
app.run(host='0.0.0.0', debug=True)
这是我的_ init _.py:
from flask import Flask
app = Flask(__name__)
这是我的views.py:
from flask import render_template, request, redirect
from mbtaCrTracker import app
from getTrainInfo import getTrainInfo
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html')
@app.route('/map', methods=['GET'])
def findTrain():
line = request.args.get('line')
direction = request.args.get('direction')
coords = getTrainInfo(line, direction)
return render_template('map.html', coords=coords)
这是我的Procfile:
web: gunicorn mbtaCrTracker:app --log-file=-
我认为一切都设置正确,因为我能够在本地运行应用程序而不会出现任何问题。当我部署到Heroku时,我可以看到该站点已启动,而不是崩溃,并且我没有收到任何服务器错误,只是未找到错误。这几乎就好像我的路线不起作用或类似的东西。
这是我在Heroku日志中看到的,当我尝试访问我网站的主页时:
2017-11-06T12:23:17.717474+00:00 heroku[web.1]: Starting process with command `gunicorn mbtaCrTracker:app --log-file=-`
2017-11-06T12:23:19.795333+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Starting gunicorn 19.7.1
2017-11-06T12:23:19.796263+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Listening at: http://0.0.0.0:43494 (4)
2017-11-06T12:23:19.796405+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Using worker: sync
2017-11-06T12:23:19.800312+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [8] [INFO] Booting worker with pid: 8
2017-11-06T12:23:19.810431+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [9] [INFO] Booting worker with pid: 9
2017-11-06T12:23:21.351354+00:00 heroku[web.1]: State changed from starting to up
2017-11-06T12:23:29.564508+00:00 heroku[router]: at=info method=GET path="/" host=mbtacrtracker.herokuapp.com request_id=cdae33d9-9f9d-4568-b619-b6c10bb34e9b fwd="172.58.216.112" dyno=web.1 connect=1ms service=19ms status=404 bytes=386 protocol=https
思想?
答案 0 :(得分:0)
以下是在Heroku上成功部署的一些步骤:
将mbtaCrTracker.py
重命名为app.py
将mbtaCrTracker
的内容剪切到根目录。删除mbtaCrTracker
目录。
app.py
应包含:
from flask import Flask, render_template, request, url_for, redirect
from getTrainInfo import getTrainInfo
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html')
@app.route('/map', methods=['GET'])
def findTrain():
line = request.args.get('line')
direction = request.args.get('direction')
coords = getTrainInfo(line, direction)
return render_template('map.html', coords=coords)
if __name__ == '__main__':
app.run()
Procfile
包含:
web: gunicorn app:app
部署此功能的一种简单方法是将其推送到github
,然后将github
存储库与heroku
中的应用相关联。