添加用于上载多个文件的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

附加增值

许可证

MIT license下释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
二进制字符串的java NumberFormatExceprion   java如何在Neo4j中查找/匹配/选择标识符名称   java哪一年的日期与原始年份相同?   java什么时候JAXB可以用于Json而不是XML?   java使用PayPal权限API进行PayPal支付   java Getting error在使用安卓 vision api扫描二维码时加载图像失败   java直接突出显示RichTextFX中的一个文本范围   java Resolve@RegisteredAuth2AuthorizedClient,其令牌在spring Security 5.2的spring server之外获得。十、   yyyymmddhhmmss的Java正则表达式   java我试图将google recaptcha与spring mvc集成,但GreCaptCharResponse总是返回false。这里有一些代码   java使用JsonPath将文本转换为json   java无法解析符号。Maven依赖项已就位,但代码为红色   java使用循环查找范围内具有不同数字的数字   java这个SwingWorker是否不重用ThreadPoolExecutor中的线程?