#django #ajax #httpresponse
#джанго #аякс #httpresponse
Вопрос:
Я задаю пользователю вопрос на своем веб-сайте, и если ответ «да», я отправлю два данных для просмотра Django с помощью файла JavaScript и с помощью Ajax. Я хочу получить эти данные в представлении Django и не отправлять пользователю никакого HttpResponse. Если мы не отправим ответ в представлении, он выдаст ошибку. Как мне это сделать?
Когда выполняется условие if request.is_ajax ():, я получаю следующую ошибку:
Ошибка значения: Представление tourist.views.plan не вернуло объект HttpResponse. Вместо этого он ничего не вернул.
Спасибо
def planing(request): if request.is_ajax(): # Get user location from user location.js file: latitude = request.POST.get('latitude', None) longitude = request.POST.get('longitude', None) # To save data request.session['latitude'] = latitude request.session['longitude'] = longitude elif request.method == "GET": return render(request, "tourist/planing.html") elif request.method == "POST": # To retrive data: latitude = request.session.get('latitude') longitude = request.session.get('longitude') if latitude is not None : latitude = float(latitude) longitude = float(longitude) . . . return render(request, "tourist/map.html")
Ответ №1:
Вы можете вернуть пустой JSON. Вот так:
from django.http import JsonResponse if request.is_ajax(): # Get user location from user location.js file: latitude = request.POST.get('latitude', None) longitude = request.POST.get('longitude', None) # To save data request.session['latitude'] = latitude request.session['longitude'] = longitude return JsonResponse({})
Это гарантирует, что на запрос AJAX будет получен ответ.