Я хочу протестировать статический API Карт Google с Django 1.3 (используя Python 2.7).Для этого я создал простую форму для запроса координат (широта и долгота), уровня масштабирования и размера карты.Форма выглядит следующим образом:
from django import forms
class GoogleMapsStaticApiForm(forms.Form):
latitude = forms.FloatField(required=True, min_value=-90.0, max_value=90.0)
longitude = forms.FloatField(required=True, min_value=-180.0,max_value=180.0)
zoom_level = forms.IntegerField(required=True, min_value=0, max_value=21)
map_width = forms.IntegerField(required=True, min_value=0, max_value=640)
map_height = forms.IntegerField(required=True, min_value=0, max_value=640)
В соответствующем представлении я хочу построить URL-адрес из информации, приведенной в форме, и вернуть URL-адрес шаблона, который должен отображать карту в том же шаблоне.
Представление:
def map_properties(request):
map_url = 'http://maps.google.com/maps/api/staticmap?'
if request.method == 'POST':
form = GoogleMapsStaticApiForm(request.POST)
if form.is_valid():
center = 'center={0},{1}'.format(form.latitude, form.longitude)
zoom = 'zoom={0}'.format(form.zoom_level)
size = 'size={0}x{1}'.format(form.map_width, form.map_height)
url_suffix = '&'.join((center, zoom, size, 'sensor=false'))
map_url = ''.join((map_url, url_suffix))
else:
form = GoogleMapsStaticApiForm()
return render_to_response('frontend/frontend.html',
{'form':form, 'map_url':map_url},
context_instance=RequestContext(request))
Шаблон:
<html>
<head>
<title>Google Maps Static API - Demo</title>
</head>
<body>
<form method="post" accept-charset="UTF-8">
{% csrf_token %}
{% for field in form %}
<input type="text" placeholder={{ field.html_name }}>
{% endfor %}
<button type="submit">Show the fancy map!</button>
</form>
{% if form.is_valid %}
<p><img src="{{ map_url }}" alt="Google Maps Static Map"></p>
{% else %}
<p>Form is not valid</p>
{% endif %}
</body>
</html>
Когда я пытаюсь проверить форму с примерами данных в консоли Django, она работает нормально:
>>> from frontend.forms import GoogleMapsStaticApiForm
>>> data = {'latitude':51.477222, 'longitude':0.0, 'zoom_level':12, 'map_width':400, 'map_height':400}
>>> f = GoogleMapsStaticApiForm(data)
>>> f.is_valid()
True
Но когда я ввожу те же данные в браузер и нажимаю кнопку отправки, тот же шаблон перезагружается, но без созданной карты.Форма никогда не подтверждается.Может кто-нибудь сказать, пожалуйста, почему это так?Большое спасибо!