1

我已经将我的第一个 Python/Flask 应用程序部署到了 heroku。该应用程序包含在一个 html 页面中,比如说 index.html,它带有一个 javascript 函数,该函数创建一个对在“url”上运行的 python 应用程序的查询

function getDistance(position) {
                         url = 'http://127.0.0.1:5000/geodesicDistance';
                         query = position.coords.latitude.toString()+','+position.coords.longitude.toString();
                         $.get(url, {'q': query},function(data) {
                         $('#results .distance')[0].innerHTML = Math.round(data['result']['distance']*1000)/1000;

                         })
}

python 应用程序接受查询并返回结果

该应用程序实际上在http://geodesicdistance.herokuapp.com/上运行,但我无法显示根文件夹中的 index.html 页面

4

2 回答 2

0

您必须先在烧瓶应用程序中创建路线,然后才能点击index.html.

你会想要这样的东西:

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/')
def geo_distance():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

然后当你点击时http://geodesicdistance.herokuapp.com/,它会渲染index.html,它应该运行你的 JS。

您还需要一条/geodesicDistance.

PS,url你函数中的参数getDistance()应该是/geodesicDistance- 你不需要127.0.0.1:5000

于 2013-08-22T14:22:11.483 回答
0

我已添加路线并将上述 Javascript 中包含的 url 修改为“/geodesicDistance”。现在 html 页面正在呈现,但我无法获得距离值,就好像没有进行查询一样

app = Flask(__name__)

@app.route("/")
def renderIndex():
    return render_template("index.html")

@app.route("/geodesicDistance")
def geodesicDistance():
    query = parseQ(request.args)
    if query:
        position = geocodeAddress(query)
        if (position) and (len(position[u'results'])>0):
            lat = position[u'results'][0][u'geometry'][u'location'][u'lat']
            lng = position[u'results'][0][u'geometry'][u'location'][u'lng']
            response = createResponse(200,'Good query',lat,lng,position[u'results'][0]  [u'formatted_address'],getDistance(lat,lng))
        else:
            response = createResponse(400,'Bad formed query','','','','')
    else:
        response = createResponse(204,'No query     made',givenAddress['lat'],givenAddress['lng'],'White Bear Yard, 144a Clerkenwell Road,    London, EC1R 5DF, UK',0.0)                               
    http_response = make_response(json.dumps(response))
    http_response.headers['Content-type'] = 'application/json'
    http_response.headers['Access-Control-Allow-Origin'] = '*'
    return http_response

我的 procfile 看起来像这样

web: gunicorn geodesicDistance:app
于 2013-08-22T17:01:47.787 回答