Django : попытка вызвать метод get после метода post для представления класса

Я сделал classview для загрузки файлов в azure blobstorage, показывает таблицу истории загруженных файлов и позволяет отображать их в правой части страницы.

У меня проблема, когда файл загружается методом POST, выбранный ранее файл не выполняется методом GET, поэтому содержимое не загружается в контекст и не может быть отображено в шаблоне.

Я придумал два решения. Первое - это вызов метода GET в конце метода POST. Однако это не работает и не кажется эффективным согласно документации stackoverflow. Поэтому я оставил его в качестве комментария в конце метода POST. Другим решением является перенаправление на этот же classview, однако и это не работает: ValueError: The view documents.views.view didn't return an HttpResponse object. It returned None instead.

Как я могу выполнить этот метод get без копирования строк кода в методе post.

views.py

html

<!DOCTYPE html>
<html lang="en">

{%  load static %} 

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- Boxicons CSS -->
    <link   href='https://unpkg.com/boxicons@2.1.1/css/boxicons.min.css' 
            rel='stylesheet'>
    <link rel="stylesheet" href="{% static 'style.css' %}">

</head>

<body>

    {{ encodedstring | json_script:'fileDATA' }} 
    {{ extension | json_script:'fileEXT'}}
    
    <div class="upload-app">
        <div class="upload-in">
            <h2>Upload</h2>

            <form method="post" enctype="multipart/form-data">
                
                {% csrf_token %}
                {{ form.as_p }}

                <button type="submit" id="submitupload">Upload</button>
            </form>
        
            <div class="fileselect">
                <p>Selected files :</p>
                    <div id="fileselect"></div>
            </div>     
        </div> 
        <div class="listfiles">

            <h2>Files Uploaded</h2>

            <table id="customers">
                <tr>
                    <th>Filename</th>
                    <th>Date</th>
                    <th>Size</th>
                    <th>Actions</th>
                </tr>

                {% for file in object_list %}
                <tr>
                    <td>{{ file.Filenamebeforeindex }}</td>
                    <td>{{ file.Timestamp | date:'d.m.Y H:i'}}</td>
                    <td>{{ file.Sizefile | filesizeformat}}</td>
                    <td class="iconsColumn">
                        <a href="">
                            <i class='bx bxs-download'></i>
                        </a>
                        <a href="?fileID={{ file.Id }}">
                            <i class='bx bxs-file-pdf' ></i>
                        </a>
                    </td>>
                </tr>
                {% endfor %}

            </table>
    </div>

    <div id="pdfdisplay">

    </div>

urls.py

from django.urls import path from documents.views import *

urlpatterns = [ 
    path('documents/', DocumentUpload.as_view(), name="documents"),
   ]

Вы не можете работать с DocumentUpload.as_view(), так как это конструирует функцию, и каждый раз другой объект функции, отсюда и ошибка.

Вы можете использовать имя представления:

urlpatterns = [
    path('documents/', DocumentUpload.as_view(), name='documents'),
]

поскольку это здесь 'document", мы можем перенаправить с:

return redirect('document')

или если есть app_name в urls.py, с:

return redirect('app_name:document')
Вернуться на верх