2017-06-04 8 views
1

利用可能なGPS値がある場合にのみgooglemaps APIマップを実行しようとしています。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 }}あなたのif条件から、ちょうどそれが横にあることを確認してください。 –

答えて

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 %} 
関連する問題