В 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