Я пытаюсь создать видеоблог, где пользователи смогут загружать свои видео.Я создал вид и форму для загрузки файла, а также настроил видеоплеер HTML5 в соответствии с некоторыми уроками.Теперь я хочу добавить индикатор загрузки файла, но не могу этого сделать из-за недостатка моих знаний в программировании.Я пытаюсь последние несколько дней.Я нашел несколько очень старых ответов о Stackoverflow, но их очень трудно понять.Я не хочу использовать какой-либо фреймворк начальной загрузки, потому что мой полный демонстрационный сайт был создан без какой-либо сторонней фреймворк.Я использую Python 3.6 , Django 2.2.5 , Postgresql 11 на Ubuntu 18.04 .Ребята, не могли бы вы увидеть мои коды ниже и помочь мне с самым простым способом решения проблемы?Заранее спасибо!
Вот форма сообщения:
{% extends 'base.html' %}
{% block content %}
<!-- GRID SYTEM BEGINS -->
<main id="content" class="main-area">
<section class="detail-main-content">
<div class="all-account">
<h1>Create a new post</h1>
<!-- form action should be blank always -->
<form method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">POST</button>
</form>
</div>
</section>
</main>
{% endblock content %}
Вот файл forms.py:
from django import forms
from .models import Post
class BaseForm(forms.Form):
def __init__(self, *args, **kwargs):
kwargs.setdefault('label_suffix', '')
super(BaseForm, self).__init__(*args, **kwargs)
class BaseModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
kwargs.setdefault('label_suffix', '')
super(BaseModelForm, self).__init__(*args, **kwargs)
class PostForm(BaseModelForm):
class Meta:
model = Post
fields = ('title', 'clip', 'description')
class EmailPostForm(BaseForm):
your_name = forms.CharField(max_length=25)
email = forms.EmailField()
to = forms.EmailField()
description = forms.CharField(required=False,
widget=forms.Textarea)
Вот файл views.py:
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.contrib.auth.models import User
from django.utils import timezone
from django.views.generic import (
ListView,
UpdateView,
DeleteView,
)
from . models import Post
from .forms import PostForm, EmailPostForm
@login_required
def post_new(request):
if request.method == "POST":
# without request.FILES file upload field won't work
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.publish = timezone.now()
post.save()
return redirect('post-detail', id=post.id)
else:
form = PostForm()
return render(request, 'vblog/post_new.html', {'form': form})