将文件附加到Django模型
项目描述
Paperclip
将附件添加到Django模型,用于MapEntity。
安装
从pypi安装(使用pip)
pip install paperclip
从github安装
pip install -e git://github.com/makinacorpus/django-paperclip.git#egg=django-paperclip
升级
升级到0.4.0后,如果您想启用链接到YouTube/Soundcloud媒体,您必须向数据库添加一个额外的列
ALTER TABLE paperclip_attachment ADD COLUMN attachment_video VARCHAR(200) NOT NULL DEFAULT '';
基本用法
将easy_thumbnails、embed_video和paperclip添加到INSTALLED_APPS
包含URL
urlpatterns = [ ... url(r'^paperclip/', include('paperclip.urls')), ... ]
在模板中包含脚本
<script src="{% static "paperclip/bootstrap-confirm.js" %}" type="text/javascript"></script> <script src="{% static "paperclip/spin.min.js" %}" type="text/javascript"></script> <script src="{% static "paperclip/paperclip.js" %}" type="text/javascript"></script>
如果您使用bootstrap 3或bootstrap 4,请包含paperclip/bootstrap-3-confirm.js或paperclip/bootstrap-4-confirm.js,而不是paperclip/bootstrap-confirm.js。
在模板中包含列表和表单
{% include 'paperclip/attachment_list.html' with object=my_instance attachment_form_next=my_instance.get_detail_url %}
在您的应用之一中添加paperclip模型
class FileType(paperclip.models.FileType): pass class Attachment(paperclip.models.Attachment): pass
配置
定义以下django设置
PAPERCLIP_ENABLE_VIDEO = False, PAPERCLIP_FILETYPE_MODEL = 'myapp.FileType' PAPERCLIP_LICENSE_MODEL = 'myapp.License' PAPERCLIP_ATTACHMENT_MODEL = 'myapp.Attachment' PAPERCLIP_ACTION_HISTORY_ENABLED = True
创建迁移并迁移
TEMPLATES
三个模板已嵌入,可以轻松覆盖
paperclip/attachment_list.html:使用以下两个模板渲染显示附件文件的对象表格和上传表单
paperclip/_attachment_table.html:使用以下模板渲染显示附件文件的对象表格。您可以使用block extra_column_header和block extra_column_data添加额外的列
paperclip/_attachment_form.html:使用以下模板渲染上传表单
使用自定义表单
您可以通过以下步骤使用自定义django表单。顺便说一下,如果您想使用django-crispy-forms或django-floppyforms,这是一个推荐解决方案。
编写您的自定义表单
from paperclip.forms import AttachmentForm class MyAttachmentForm(AttachmentForm): ...
注意:为确保不破坏表单逻辑,我们建议从原生paperclip.forms.AttachmentForm继承。
将您的表单类添加到主视图上下文的attachment_form_class变量中
context['attachment_form_class'] = MyAttachmentForm
覆盖'add_attachment'和'update_attachment' URL以在参数中提供您的自定义表单类
from my_app.forms import MyAttachmentForm
urlpatterns = [
path('paperclip/', include('paperclip.urls')),
...
path('add-for/<str:app_label>/<str:model_name>/<int:pk>/',
'paperclip.views.add_attachment',
kwargs={'attachment_form': MyAttachmentForm},
name="add_attachment"),
path('update/<int:attachment_pk>/',
'paperclip.views.update_attachment',
kwargs={'attachment_form': MyAttachmentForm},
name="update_attachment"),
...
]
注意:确保在包含paperclip URL之后编写这些URL。
清理
删除或更改附件不会从磁盘上删除旧的附件文件。您可以在必要时运行以下命令来定期清理过时的文件
./manage.py clean_attachments
许可证
LGPL
变更日志
2.7.2 (2023-02-21)
修复在未添加标题和随机后缀的情况下更新旧附件(版本<2.7.0)时附件和文件之间的链接丢失的问题
2.7.1 (2023-02-17)
修复在未添加随机后缀的情况下更新旧附件(版本<2.7.0)时附件和文件之间的链接丢失的问题
2.7.0 (2023-02-15)
对上传的文件添加安全检查
修复点击pypi徽章时链接到Pypi项目的链接(另一个pypi项目名为django-paperclip)
修复测试支持HTML文件中的拼写错误(尽管没有损坏)
2.6.1 (2022-07-07)
更改设置名称:PAPERCLIP_MIN_ATTACHMENT_HEIGHT,PAPERCLIP_MIN_ATTACHMENT_WIDTH > PAPERCLIP_MIN_IMAGE_UPLOAD_WIDTH,PAPERCLIP_MIN_IMAGE_UPLOAD_HEIGHT
仅当它是图像时修复图像的检查大小
2.6.0 (2022-07-06)
** 新功能 **
添加最大尺寸图像表单PAPERCLIP_MAX_BYTES_SIZE_IMAGE
添加最小高度图像表单PAPERCLIP_MIN_ATTACHMENT_HEIGHT
添加最小宽度图像表单PAPERCLIP_MIN_ATTACHMENT_WIDTH
2.5.1 (2022-07-05)
添加块模板
2.5.0 (2022-04-26)
** 新功能 **
在附件上添加字段许可证
2.4.3 (2022-04-08)
将法语列名替换为英语列名
2.4.2 (2022-03-29)
** 修复 **
修复js初始化模式嵌入类型应为文件而不是YouTube
2.4.1 (2022-03-18)
** 修复 **
修复表单启用_linkjavascript
2.4.0 (2022-01-10)
** 新功能 **
支持Django 4.0
2.3.4 (2021-12-13)
新功能
添加PAPERCLIP_RESIZE_ATTACHMENTS_ON_UPLOAD设置以在上传时启用附件缩放
添加PAPERCLIP_MAX_ATTACHMENT_WIDTH和PAPERCLIP_MAX_ATTACHMENT_HEIGHT以配置附件缩放(默认为1280px)
2.3.3 (2021-09-03)
** 新功能 **
在附件列表中显示自定义列
2.3.2 (2021-06-09)
添加 bootstrap-4-confirm
2.3.1 (2021-06-03)
** 新功能 **
支持 Django 3.2 和 Python 3.9
取消对 Python 3.5 的支持
2.2.6 (2020-11-24)
** 新功能 **
支持 Django 3.1
2.2.5 (2020-05-15)
** 新功能 **
支持 Django 2.2 和 3.0
取消对 Django 1.11、2.0、2.1 和 Python 2 的支持
设置自动 is_image 数据库列
2.2.4 (2020-03-10)
** 修复 **
根据需要显示附件文件、视频或链接小部件
2.2.3 (2019-12-31)
** 修复 **
修复 Django 2 的要求
2.2.2 (2019-10-08)
** 修复 **
默认情况下不设置作者为当前用户名
修复模式预选择
2.2.1 (2019-01-07)
** 修复 **
修复权限更改、删除和删除他人的问题
2.2.0 (2018-11-07)
** 新功能 **
支持 Python3、Django 2.0 和 2.1
取消对 Django 1.8、1.9 和 1.10 的支持
2.1.2 (2018-03-25)
** 新功能 **
支持 Django 1.8 到 1.11
2.1.1 (2017-03-23)
** 修复 **
修复所需发布的包含问题
2.1.0 (2017-03-23)
** 新功能 **
从现在起,附件模型支持外部图片 URL
2.0.0 (2017-02-21)
** 破坏性更改 **
提供一个抽象模型。用户需要定义自己的附件模型
1.0.0 (2017-01-14)
** 破坏性更改 **
取消对 Django <= 1.7 的支持
将 urls 中的参数 'module_name' 重命名为 'model_name'
** 新功能 **
支持 Django 1.8
添加初始迁移(注意!它取决于应用设置)
0.5.0 (2016-01-11)
** 新功能 **
添加清理旧文件的命令
0.4.1 (2015-03-20)
** 修复 **
修复上传文件修改
0.4.0 (2015-03-20)
** 新功能 **
允许添加到 YouTube 或 Soundcloud 媒体的链接
0.3.0 (2015-03-18)
** 已移除(警告:向后不兼容) **
完全移除 crispy_forms 和 floppy_forms 集成(您现在可以用自定义的一个来覆盖它)
** 新功能 **
允许使用自定义表单
0.2.3 (2014-12-15)
处理可交换的用户模型
嵌入 spinner、bootstrap-confirm 和添加 bootstrap-3-confirm
取消对 crispy_forms 的依赖
0.2.2 (2014-11-14)
修复附件的权限检查
0.2.0 (2014-11-12)
允许从请求中覆盖文件类型。
0.1.3 (2014-11-07)
修复区域文件打包
0.1.2 (2014-11-07)
修复作者和图例上传正则表达式缺失
0.1.1 (2014-11-03)
修复包中缺失的 SVG 媒体
0.1.0 (2014-10-23)
初始工作版本
项目详情
paperclip-2.7.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 67e62bf9e95b700bdb9329d9def41d9ed67a8bbe31044d94ded9196fd88cf3ab |
|
MD5 | adc7c6698612d037b87611e1a56589bd |
|
BLAKE2b-256 | 3d0d9d98e375c66ddfc189f0d047e7bec292a7d381fe04c4e76a9b34a5171b5e |