添加用于上载多个文件的jquery动态表单
django-multiuploader的Python项目详细描述
Django多上传程序
django multiuploader是一个能够上传 django中有多个带有html5(jquery插件)的文件。
安装
$ pip install django-multiuploader
然后,您应该将“multiuploader”附加到已安装的应用程序并运行
$ python manage.py syncdb
或者,如果您使用南方:
$ python manage.py migrate multiuploader
另外,如果要预览上载的图像,则需要对 索尔。缩略图。
您必须至少有django 1.3.1或更高版本。
此外,还需要将“multiuploader.context_processors.booleans”附加到 你的TEMPLATE_CONTEXT_PROCESSORS。
设置
在settings.py中,您可以使用这些选项来配置应用程序:
MULTIUPLOADER_FILES_FOLDER='多上传程序'-存储文件的媒体位置
MULTIUPLOADER_FILE_EXPIRATION_TIME=3600-文件过期时的时间(可以使用clean_files命令清除)。
MULTIUPLOADER_FORMS_SETTINGS=
{ 'default': { 'FILE_TYPES' : ["txt","zip","jpg","jpeg","flv","png"], 'CONTENT_TYPES' : [ 'image/jpeg', 'image/png', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation', 'text/plain', 'text/rtf', ], 'MAX_FILE_SIZE': 10485760, 'MAX_FILE_NUMBER':5, 'AUTO_UPLOAD': True, }, 'images':{ 'FILE_TYPES' : ['jpg', 'jpeg', 'png', 'gif', 'svg', 'bmp', 'tiff', 'ico' ], 'CONTENT_TYPES' : [ 'image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/svg+xml', 'image/tiff', 'image/vnd.microsoft.icon', 'image/vnd.wap.wbmp', ], 'MAX_FILE_SIZE': 10485760, 'MAX_FILE_NUMBER':5, 'AUTO_UPLOAD': True, }, 'video':{ 'FILE_TYPES' : ['flv', 'mpg', 'mpeg', 'mp4' ,'avi', 'mkv', 'ogg', 'wmv', 'mov', 'webm' ], 'CONTENT_TYPES' : [ 'video/mpeg', 'video/mp4', 'video/ogg', 'video/quicktime', 'video/webm', 'video/x-ms-wmv', 'video/x-flv', ], 'MAX_FILE_SIZE': 10485760, 'MAX_FILE_NUMBER':5, 'AUTO_UPLOAD': True, }, 'audio':{ 'FILE_TYPES' : ['mp3', 'mp4', 'ogg', 'wma', 'wax', 'wav', 'webm' ], 'CONTENT_TYPES' : [ 'audio/basic', 'audio/L24', 'audio/mp4', 'audio/mpeg', 'audio/ogg', 'audio/vorbis', 'audio/x-ms-wma', 'audio/x-ms-wax', 'audio/vnd.rn-realaudio', 'audio/vnd.wave', 'audio/webm' ], 'MAX_FILE_SIZE': 10485760, 'MAX_FILE_NUMBER':5, 'AUTO_UPLOAD': True, }}
它是一个具有多个表单设置的字典。附加多上载程序时,可以选择预配置的表单类型,它将只接受您提供的扩展名和内容类型。
所有这些参数都是可选的。
用法
上传表单
要上载文件,您应该执行几个简单的步骤:
附加urlpattern (r'^your_uploads/',include('multiuploader.urls')) 你的urlpatterns。在视图中创建multiuploadform()并设置它 上下文
示例:
from django.shortcuts import render_to_response from multiuploader.forms import MultiUploadForm def my_view(request): context = { 'uploadForm':MultiUploadForm() } return render_to_response(your_template, context=context)
附加到表单中,您希望在其中上载文件multiuploaderfield:
示例:
# Your forms.py from multiuploader.forms import MultiuploaderField class PostMessageForm(forms.Form): text = forms.CharField(label=u'Question', widget=forms.Textarea) uploadedFiles = MultiuploaderField(required=False)
然后您应该在模板中呈现此字段:
{% load multiuploader %} <form method="POST" action="" enctype="multipart/form-data"> {% csrf_token %} <p> {{ form.text }} {{ form.text.errors }} {{ form.uploadedFiles }} {{ form.uploadedFiles.errors }} </p> <p> {% multiuploader_noscript form.uploadedFiles.html_name %} <input id="send" type="submit" value="Send" class="button"> <a id="showUpload" type="button" class="button"><i class="attachment"></i>Attach files</a> </p> </form> {% multiuploader_form form_type="default" template="multiuploader/form.html" target_form_fieldname=forms.edit.uploadedFiles.html_name js_prefix="jQuery" send_button_selector="input[name=_edit]" wrapper_element_id="fileUploads" lock_while_uploading=True number_files_attached=forms.attached_count %}
在本例中
{% multiuploader_noscript form.uploadedFiles.html_name %}template标记加载仅在关闭javascript的浏览器中显示的代码。
- form.uploadedFiles.html_name-模板标记定义的参数 元素名。
{% multiuploader_form form_type="default"template="multiuploader/form.html" target_form_fieldname=forms.edit.uploadedFiles.html_name js_prefix="jQuery"send_button_selector="input[name=_edit]"wrapper_element_id="fileUploads" lock_while_uploading=True number_files_attached=forms.attached_count %}template标记加载执行所有所需逻辑的代码。
- form_type-具有预定义设置的表单类型,在multiuploader\u forms\u settings dictionary的settings.py中定义
- template-多上传程序模板
- target_form_fieldname-html字段名multiuploaderfield在我们的例子中是uploadedfiles的名称
- js_prefix-jquery前缀(在管理面板中创建多上传程序时非常有用)。此参数是可选的
- send_button_selector-jquery在上载文件时,应该锁定字段的选择器
- wrapper_element_id-要在其中创建表单的id(表单容器)的名称。对造型有用。此参数是可选的
- lock_while_uploading是一个布尔变量,用于控制multiuploader是否应在上载时锁定submit。此参数是可选的
这些参数也可以用作位置参数。
模板
- multiuploader/form.html-MultiUploadForm模板,您可以更改此处的外观。
- multiuploader/noscript.html-noscript case的模板。
开发
开发工作正在按照存储库进行:
所有的功能请求、想法、错误报告等都写在tracker中: -https://bitbucket.org/Satchitananda/django-multiuploader/issues
附加增值
- jquery html5上传程序的sebastian tschan(https://blueimp.net/)。
- 为django multiuploader skeleton准备的iurii garmash,这是 此应用程序的代码库。
许可证
在MIT license下释放。