'file' 属性没有与之关联的文件

The 'file' attribute has no file associated with it

当我从 addvideo 模板文件添加视频时,它说:'file' 属性没有与之关联的文件。我希望用户能够上传视频。

当我从我的管理员添加视频时,它工作正常,但是当我从我的表单页面添加它时,它在管理员中添加了视频,但它没有在主页中显示视频,它突出显示了我的视频标签 src= “{{video.file.url}}”说:'file' 属性没有与之关联的文件。

这是我的模特:

class Video(models.Model):
    file = models.FileField(upload_to='file', null=False, blank=False)

这是我的观点:

def addvideo(request):
    if request.method == 'POST':
        file = request.FILES.get('video')
        videos = Video.objects.create(
            file=file
        )
        return redirect('home')
    return render(request, 'addvideo.html') 

def home(request):
    videos = Video.objects.all()
    return render(request, 'home.html', {'videos': videos})

这是我的添加视频模板:

        <div class="col-md-5">
            <form action="" method="POST">
                {% csrf_token %}
            <div class="card">        
                <div class="form-group m-3">
                    <label>Upload Your Video</label><br><br>
                     <input required name="video" type="file" class="form-control-file">
                </div>
                <button type="submit" class="btn btn-primary">Post</button>
            </div>
        </form>
        </div>

这是我的主页模板:

    <div class="container">
        {% for video in videos %}
        <div class="row justify-content-center">
            <video style="height: 500px; width: 500px;" controls src="{{video.file.url}}"> 
            </video>
        </div>
        {% endfor %}
          </div>

为了提交具有 HTML 形式的文件,您需要指定它将如何发送文件内容:您需要指定 enctype="…" [MozillaDev]。你可以这样做:

<form action="" method="POST" <strong>enctype="multipart/form-data"</strong>>
    {% csrf_token %}
    <div class="card">        
        <div class="form-group m-3">
            <label>Upload Your Video</label><br><br>
            <input required name="video" type="file" class="form-control-file">
        </div>
        <button type="submit" class="btn btn-primary">Post</button>
    </div>
</form>