Django, проблема с запросом на рендеринг: "Представление main.views.licz не вернуло объект HttpResponse. Вместо этого оно вернуло None".
Я пытаюсь сделать сайт и у меня проблема с загрузкой файла. В админке сайта я могу загрузить и импортировать любой файл, но когда я создаю представление, я получаю следующее: "Представление main.views.licz не вернуло объект HttpResponse. Вместо этого оно вернуло None". Вот код из main.models:
class Plik(models.Model):
file = models.FileField(upload_to='uploads/')
Код из файла forms.py:
class upload(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
И код из файла views.py:
def licz(request):
if request.method == "POST":
form = upload(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("main/licz.html", {"form":form})
else:
form = Plik()
return render(request, "main/licz.html", {"form":form})
Plz Я пытаюсь решить это уже 5 дней...
def licz(request):
if request.method == "POST":
form = upload(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("main/licz.html", {"form":form})
else:
form = Plik()
return render(request, "main/licz.html", {"form":form})
# if request is GET, python will execute this part of the function
Ваша функция livz
ничего не возвращает на запрос GET
.
Если оператор возврата не задан, Python вернет None
.
return render(...)
выполняется только на POST
запросе (когда форма отправлена) с недействительной формой.
Вам необходимо также отобразить вашу страницу на другом методе запроса. Типичное представление формы должно выглядеть следующим образом (обратите внимание на отступ):
def form_view(request):
if request.method == 'POST':
form = MyForm(data=request.POST)
if form.is_valid():
# do stuff with the form
return HttpResponseRedirect('/success-url')
else:
form = MyForm()
return render('my-template', {'form': form})
Обратите внимание на условия (if/else/...) и убедитесь, что ваша страница возвращает ответ при любом возможном пути выполнения кода.
def licz(request):
if request.method == "POST":
form = upload(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("main/licz.html")
else:
form = Plik()
return render(request, "main/licz.html", {"form":form})