尝试使用 django 和 dropzone/ [英] Trying to use django and dropzone/

查看:32
本文介绍了尝试使用 django 和 dropzone/的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将 dropzone.js 与 django 一起使用.

I'm trying to use dropzone.js with django.

我在这里遵循有些过时的指南(https://amatellanes.wordpress.com/2013/11/05/dropzonejs-django-how-to-build-a-file-upload-form/)

我强烈怀疑我的观点有问题.

I'm following the somewhat dated guide here (https://amatellanes.wordpress.com/2013/11/05/dropzonejs-django-how-to-build-a-file-upload-form/)

I strongly suspect My view is at issue.

我已经测试过使用 dropzone 代码提交给它

def test(request): print "test view has been called" if request.method == 'POST': print "test request method is POST" form = UploadFileForm(request.POST, request.FILES) print request print request.FILES if form.is_valid(): new_file = AttachedFiles(attachedfile=request.FILES['file']) new_file.save() id = new_file.pk print id print "test form valid" return HttpResponse(json.dumps({'id': id}), content_type="application/json") print "test form not valid" else: form = UploadFileForm() data = {'form': form} return render_to_response('mediamanager/test.html', data, context_instance=RequestContext(request))

I've tested submitting to it with the dropzone code

和一个基本形式

and a basic form

而且表格永远无效.我正在使用建议的模型

<form action="{% url "test" %}" method="post" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="file" /> <input type="submit" value="Submit"> </form>

And the form is never valid.
I'm using a modelform as suggested

推荐答案

您可以像处理任何其他多部分表单帖子一样处理 Dropzone 帖子.

解决方案

以下是我的处理方式:

Here's how I proceed: 

表格太简单了

The form is dead simple

在您的模型中,您需要设置 upload_to:

class PhotoUploadForm(forms.Form): # Keep name to 'file' because that's what Dropzone is using file = forms.ImageField(required=True)

In your model you need the upload_to set: 

这是我的上传路径构建器,但你可以放任何东西

class Picture(models.Model): [...] # Original file = models.ImageField(upload_to=get_upload_path)

And here's my upload path builder, but you can put anything

不要忘记 html 表单本身中的 csrf_token(我在它上面使用了一个 angularJS 指令,所以对你来说会有所不同)

def get_upload_path(instance, filename): """ creates unique-Path & filename for upload """ ext = filename.split('.')[-1] filename = "%s.%s" % (instance.p_uid, ext) d = datetime.date.today() username = instance.author.username #Create the directory structure return os.path.join( 'userpics', username, d.strftime('%Y'), d.strftime('%m'), filename )

Don't forget the csrf_token in the html form itself (I'm using an angularJS directive on top of it so will be different for you)

</表单>

<form action="{% url 'upload_picture' %}" class="dropzone" drop-zone> {% csrf_token %} <div class="fallback"> <h3>Your browser is not supported.</h3> <strong> <a href="https://browser-update.org/update.html" target="_blank">Click here for instructions on how to update it.</a> </strong> <p>You can still try to upload your pictures through this form: </p> <p> <input name="file" type="file" multiple /> <input type="submit" value="Upload" /> </p> </div> </form>

这篇关于尝试使用 django 和 dropzone/的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆