2017-06-04 50 views
1

我试图运行一个googlemaps API地图,只有当有GPS值可用。Flask Jinja tempate loop:错误没有显示

此检查是否有GPS,如果没有的话ERROR1:

error1 = None 
GPS =[] 
try: 
    GPS = gd.get_gps(request.form['address']) 
    if len(GPS) == 0: 
     error1 = 'No GPS data' 
    else: 
     GPS.append(GPS) 
except: 
    error1 ='No GPS data' 
    pass 
return render_template('Client_Details.html', error1 =error1,GPS=GPS) 

这是模板:

{% if error1 %} 
<p class='alert'>{{ error1 }}</p> 
{% elif GPS %} 
<div id = "location"> 
<caption> Location <caption> 
{{googlemap("map_name", lat=GPS[0], lng= GPS[1], zoom=17, maptype= 'SATELLITE', markers=[(GPS[0], GPS[1])])}} 
{% endif %} 

这工作如果有可用的GPS和地图显示,但如果有是没有GPS(即GPS列表为空),它不显示error1,但给我这个错误:

AttributeError: lat and lng required 
+0

如果没有GPS,您可以在模板中打印{{error1}}吗? –

+0

这是我的问题 - 如果没有GPS,那么它应该打印{{error1}}('没有GPS数据'),但它仍然试图运行googlemap ... – wazzahenry

+0

它是打印{{error1 }}出于你的条件,只要检查它的内容。 –

回答

0

您正在以奇怪的方式回收GPS变量,请尽量避免这种情况。

error1 = None 
GPS = [] 

try: 
    form_coordinates = gd.get_gps(request.form['address']) 
    if not form_coordinates: 
     error1 = 'No GPS data' 
    else: 
     GPS.append(form_coordinates) 
except: 
    error1 = 'No GPS data' 

return render_template('Client_Details.html', error1=error1, GPS=GPS) 

此外,使用jinja2 length函数检查是否有任何坐标。

{% if GPS is defined and GPS|length > 0 %} 
<div id="location"> 
<caption> Location </caption> 
{{googlemap("map_name", lat=GPS[0], lng=GPS[1], zoom=17, maptype='SATELLITE', markers=[(GPS[0], GPS[1])])}} 
</div> 
{% else %} 
<p class='alert'>{{ error1 }}</p> 
{% endif %}