В Django я использую request.POST и возвращаю JSONResponse, но url показывает ошибку объекта HttpResponse. Я не хочу использовать render()

Я использую Ajax для отправки POST. В файле views.py у меня есть следующее:

def color(request):
    if(request.POST.get('mydata',False)):
        mylist= request.POST['mydata']
        mylist= mylist.split(",")
        request.session['var1'] = mylist[0]
        request.session['var2'] = mylist[1]
        return JsonResponse({'success':True})

В urls.py я определил color, поэтому, когда я перехожу к localhost:8000/color, появляется ошибка: "didn't return an HttpResponse object". Я должен использовать вместо этого return render(request,'app/color.html',{}), но у меня нет файла color.html. На самом деле я и не хочу его иметь. Все, что я хочу, это разместить переменную и использовать ее в качестве сессии, так как я могу избежать использования render() и создания html-файла? Спасибо

Это весь код вашего представления? Если да, то ошибка связана с тем, что вы ничего не возвращаете, если ваше выражение request.POST.get('mydata',False) if возвращает False. Вам нужен окончательный возврат, например, так:

def color(request):
    if(request.POST.get('mydata',False)):
        mylist= request.POST['mydata']
        mylist= mylist.split(",")
        request.session['var1'] = mylist[0]
        request.session['var2'] = mylist[1]
        return JsonResponse({'success':True})
    return JsonResponse({'success':False}) # a response is now always returned
Вернуться на верх