@Napaste

Как отрисовать на странице переменную, получаемую ходе обработки POST запроса с этой страницы?

Имеется страница, с которой 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'".
Можно ли как то исправить эти ошибки? Или тут все в корне неправильно?
  • Вопрос задан
  • 601 просмотр
Пригласить эксперта
Ответы на вопрос 1
k0t3n
@k0t3n
Python, InfoSec, IT
*дабл фейспалм*
Ты запрос передаешь на файл /weather/views.py, а не на урлу
Лучше использовать class-based views, а исключения ловить через try except
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы