我想在会话中存储用户的位置坐标
我正在使用Flask Micro Framework。
from flask import session as sess
geolocator = GoogleV3()
@app.route('/location', methods = ['POST'])
def location():
latitude = request.json['latitude']
longitude = request.json['longitude']
address = geolocator.reverse(str(latitude)+ "," + str(longitude),exactly_one = True)
sess['lat'] = float(latitude)
sess['long'] = float(longitude)
这是我为在会话中存储位置而编写的代码
我不认为这是正确的方法,因为我无法检索存储的数据,并且这些数据对于每个用户都不同,我使用此坐标进行进一步计算,即找到车库。
< br />以下是相同的代码。
def find_garage():
garageList = session.query(Garage)
user_coords = (float(sess['lat']), float(sess['long']))
for garage in garageList:
d = haversine(user_coords,(float(garage.locationX),float(garage.locationY)))
if d <= 0.5:
sess['garagename'] = garage.name
sess['garagecontact'] = garage.contactnumber
send_email("myemail@example.com","Location:",str(sess['garagename']))
break
一旦用户提交了有关所需服务类型的帖子请求,我就会运行此find_garage()
方法。但我无法检索会话中存储的garagename
和lat long
我得到KeyError
也许这是因为刷新了。
请注意:我没有使用任何其他代码行来使用会话。
答案 0 :(得分:0)
使用sess.get('lat',0)
代替sess['lat']
和sess.get('long',0)
代替sess['long']
,因为在第一次调用find_garage
时,会话字典可能为空。
如果密钥不在dict中,则dict的get方法返回0(可选的第二个参数,如果为空则返回None)。
如果未设置这两个键,请使用0或其他默认值。