Вы можете создать эту функцию с помощью:
- формы, которая выполняет запрос POST при отправке
- представления django, которое генерирует видеофайл, запускаемый запросом POST,
- это представление сохраняет hashed_video_file_name в сеансе после создания видео
- если пользователь повторно посещает страницу, проверьте, существует ли видеофайл для этого hashed_video_file_name в сеансе
например:
index. html
<body>
<form method="POST" action="{% url 'video-file' %}">
<input type="submit"/>
</form>
{% if video %}
<video>
// render video here
</video>
{% endif %}
</body>
urls.py
from views import VideoFileView
urlpatterns = [
path('video-file/', VideoFileView.as_view(), name='video-file')
]
views.py
from models import VideoUpload
from video_generator import generate_video_file
class VideoFileView(View):
def get(self, request):
context = {}
try:
hashed_video_file_name = request.session['video_file']
video_upload = VideoUpload.objects.get(hashed_video_file_name=hashed_video_file_name)
context = {
'video': video_upload.videofile
}
except KeyError, VideoUpload.DoesNotExist:
pass
# this html also contains form
return render(request, 'index.html', context=context)
def post(self, request):
# here your magic to generate video_file
video_file = generate_video_file()
video_upload = VideoUpload.objects.create(videofile=video_file, name='name')
request.session['video_file'] = video_upload.hashed_video_file_name
return render(request, 'index.html', {'video': video_upload.videofile})