Представление main.views.view не вернуло объект HttpResponse. Вместо этого оно вернуло None

У меня есть функция загрузки. Но когда я пытаюсь загрузить файл. Я получаю эту ошибку:

ValueError at /controlepunt140
The view main.views.view didn't return an HttpResponse object. It returned None instead.

Так вот шаблон:"

 <form
            class="form-inline"
            role="form"
            action="/controlepunt140"
            method="POST"
            enctype="multipart/form-data">
            <div class="form-group">
              {% csrf_token %} {{ form }}
              <button type="submit" name="form_excel" onclick="test()" class="btn btn-warning">
                Upload!
              </button>
            </div>
            <div class="form-outline">
              <div class="form-group">
                <textarea class="inline-txtarea form-control" id="" cols="65" rows="25">
  {{content_excel}}</textarea
                >
              </div>
            </div>
          </form>

и views.py:

def post(self, request):
      
        submitted_form = ExcelForm(request.POST, request.FILES)
        content_excel = ''

        if request.POST.get('form_excel') is not None:
            if submitted_form.is_valid() and request.POST:
                excel_file = request.FILES["upload_file"]
                excel_file.save()

                wb = openpyxl.load_workbook(excel_file)             
                worksheet = wb['Sheet1']
                print(worksheet)
                excel_data = list()              
                content_excel = excel_data

            return render(request, "main/controle_punt140.html",  {
                'form': ExcelForm(),
                "content_excel": content_excel,
            })
        return render(request, "main/controle_punt140.html", {
            "form": submitted_form,
            "content_excel": content_excel,
        })

и forms.py:

class ExcelForm(forms.Form):
    upload_file = forms.FileField()

Вопрос: как это решить?

Похоже, что какое-то условие if недействительно, поэтому представление не возвращает HttpResponse, или проблема может быть связана с тем, что не происходит перенаправления после проверки (т.е. submitted_form.is_valid()), поэтому попробуйте следующий вид:

def post(self, request):
    submitted_form = ExcelForm(request.POST, request.FILES)
    content_excel = ''

    if request.POST.get('form_excel') is not None:
        if submitted_form.is_valid() and request.POST:
            excel_file = request.FILES["upload_file"]
            excel_file.save()

            wb = openpyxl.load_workbook(excel_file)
            worksheet = wb['Sheet1']
            print(worksheet)
            excel_data = list()
            content_excel = excel_data

            return render(request, "main/controle_punt140.html",  {
                "form": ExcelForm(),
                "content_excel": content_excel,
            })
        else:
            print('submitted form is not valid check it.')
    else:
        print('form-excel value is not in request.POST.get()')
    return render(request, "main/controle_punt140.html", {
        "form": submitted_form,
        "content_excel": content_excel,
    })
Вернуться на верх