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')