javascript - 如何在 Django 中 AJAX 视频上传

标签 javascript jquery django python-3.x

好的,所以我已经发布了有关此问题的文章,我现在正在尝试隔离该问题..

我试图简单地提交一个表单,并在成功时出现一个警报(只是为了验证我的代码是否有效)。我是 Jquery/JS 新手。当我注释掉我的代码时,未注释的代码可以工作:

$(document).ready(function(){
    var $myForm = $('.form')
    $myForm.addClass('site-yellow')

    $('.form').on('submit', function(event){

        event.preventDefault();
        var form = $(event.target)
        var formData = new FormData(form[4]);
                alert("Video done!");

//        $.ajax({
//            type : 'POST',
//            url : "{% url 'videos-upload' %}",
//            data : {
//            data : formData,
//            csrfmiddlewaretoken: '{{ csrf_token }}',
//            }
//            success : function(){
//            }
//        });
    });
});

一旦我取消注释代码,整个事情就会崩溃..但我似乎无法弄清楚..

我的观点:

class VideoUploadView(PermissionRequiredMixin, LoginRequiredMixin, FormView):
    form_class = VideoUploadForm
    success_url = '/videos'
    template_name = 'videos/video_form.html'

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            # stuff
            form.save()
            messages.success(self.request, self.success_message)
            return redirect(self.success_url)
        return render(request, self.template_name, {'form': form})

我的 HTML:

        <form class="form" enctype="multipart/form-data" method="POST">
            {% csrf_token %}
            <div class="form-row mt-4 mb-4">
                <div class="form-group col-md-12 mb-0">
                    {{ form|as_crispy_field }}
                </div>
            </div>
            <div class="form-row mt-4">
                <button class="btn btn-warning" type="submit">Save Video</button>
            </div>
        </form>

我需要做什么才能获取 AJAX 请求来提交表单?

最佳答案

JS:

$.ajax({ 
type: 'POST', 
url: '{% url "upload-videos" %}', 
enctype: 'multipart/form-data',
processData: false,
contentType: false,
data: new FormData(this) ,
    success: function(data){
    alert('Success')
    }

在你的views.py中,你需要接收json:

if request.method == 'POST':
    form = self.form_class(request.POST, request.FILES)
    if form.is_valid():
         print("done")

关于javascript - 如何在 Django 中 AJAX 视频上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59241856/

相关文章:

javascript - 如何重置图像源中的变量?

javascript - 在网站上自定义光标图像的最佳方法

javascript - 如何从数据表中的复选框选中的行中获取数据

javascript - 当处理选中/取消选中事件并将所有复选框一起设置为真时,js 树在 ie 中不起作用

python - 尝试在 Django 中上传图像时出现 MultiValueDictKeyError

python - django-tagging 的安装问题

javascript - 如何使用脚本编辑器在谷歌表格中选择整行并以不同颜色突出显示?

jquery - 使用 if else 检查 jquery 中的输入值

django - 如何在 django-redis 中扩展缓存 ttl(生存时间)?

javascript - 功能性 HTML 表格(排序、过滤、移动和切换列)