Имеется страница, с которой JS отправляет AJAX POST запрос. Вот она:
<html>
<head>
<meta charset='utf-8'>
<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="https://api-maps.yandex.ru/2.0/?load=package.full&lang=eu-EU" type="text/javascript"></script>
<script type="text/javascript">
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
$(document).ready(function(){
ymaps.ready(function(){
var geolocation = ymaps.geolocation;
$.ajax({
url: '/weather/views.py',
type: "POST",
data: {csrfmiddlewaretoken: getCookie('csrftoken'),
city: geolocation.city}
});
$('#tow').html('Ваш город: '+geolocation.city);
});
});
</script>
</head>
<body>
<span id = 'tow'>Ваш город: ...определяется...</span>
<span id = 'temperature'>Температура за бортом: {{temperature}}</span><br>
<span id = 'conditions'>Погодные условия: {{conditions}}</>
</body>
</html>
Запрос принимает вьюха
from django.shortcuts import render
from django.http import HttpResponse
from . import soup
def weather(request):
city = request.POST.get('city')
weath_tuple = soup.weath(city)
temperature = weath_tuple[0]
conditions = weath_tuple[1]
Если использовать
city = request.POST.get('city')
, django возвращает ошибку TypeError at /weather must be str, not NoneType. Если использовать
city = request.POST['city']
django вернет MultiValueDictKeyError at /weather "'city'".
Можно ли как то исправить эти ошибки? Или тут все в корне неправильно?