django附件是将文件(附件)附加到任何模型的通用django应用程序。
django-attachments的Python项目详细描述
django附件
django attachments是一组通用的模板标记,可以附加任何类型的 文件到模型。
安装:
将 附件 放到 设置中已安装的应用程序中。py 在您的django项目中:
INSTALLED_APPS = ( ... 'attachments', )
将附件urlpattern添加到您的 urls.py :
url(r'^attachments/', include('attachments.urls', namespace='attachments')),
迁移数据库:
./manage.py migrate
授予用户一些权限:
- 对于添加附件,授予用户(或组)权限 附件。添加附件
- 对于删除附件,授予用户(或组)权限 附件。删除附件。这允许用户删除 仅限附件。
- 对于删除外部附件(其他用户的附件),授予 用户的权限 附件。删除外部附件
如果要删除,请将"从磁盘中删除附件"设置为"真"。 删除附件对象时磁盘上的文件!
配置文件上载最大大小(可选)。这是 引发表单验证错误之前的字节数。如果未设置,则没有限制 文件大小。
< > >
小心你的档案!
django附件将文件存储在站点媒体目录中,并且不会修改 他们。例如,如果用户上传了一个.html文件,那么web服务器可能会显示 它在HTML中。把这些文件作为纯文本提供是个好主意。在ApACE2中 配置如下:
<Location /site_media/attachments> AddType text/plain .html .htm .shtml .php .php5 .php4 .pl .cgi </Location>
测试
使用pipenv在本地环境中运行测试套件
$ cd django-attachments/ $ pipenv install --dev $ pipenv run ./runtests.py
或者使用tox测试各种django和python版本:
$ tox -r
您还可以通过调用 带有测试应用程序设置的django管理工具:
$ cd django-attachments/ $ pipenv install --dev $ pipenv run django-admin.py migrate $ pipenv run django-admin.py runserver
用法:
在控制管理中:
django attachments提供了一个内联对象,用于将附件列表添加到 管理应用程序中的任何型号。
只需将 附件行 添加到模型的管理选项中。例子:
from django.contrib import admin from attachments.admin import AttachmentInlines class MyEntryOptions(admin.ModelAdmin): inlines = (AttachmentInlines,)
在前端模板中:
首先,在要使用的每个模板中加载附件标记:
{% load attachments_tags %}
django附件附带了一些用于添加或删除附件的模板标记 用于前端的模型对象。
获取[对象]的附件:获取给定对象的附件 模型实例。您可以选择定义一个变量名,其中 list存储在模板上下文中(这在django 1.8中是必需的)。如果 您不定义变量名,而是打印结果。
{%get_attachments作为"attachments_list"%}条目
附件计数[对象] :计数给定的附件 对实例建模并返回int:
INSTALLED_APPS = ( ... 'attachments', )
0附件表单 :呈现上载表单以添加给定的附件 模型实例。例子:
INSTALLED_APPS = ( ... 'attachments', )
1如果当前用户未登录,则返回空字符串。
附件删除链接:为给定的 附件 。例子:
INSTALLED_APPS = ( ... 'attachments', )
2此标记自动检查权限。如果 give n attachment的创建者是当前登录的用户,或者该用户具有 删除外部附件 权限。
< > >
快速示例:
INSTALLED_APPS = ( ... 'attachments', )3
更改日志:
v1.4.1(2019-07-22)
- templateTags现在允许一个可选的 next 参数。
v1.4(2019-02-14)
- 放弃对django<;=1.10的支持。
- 修正了"next"url参数重定向。
v1.3.1(2019-01-24):
- django 2.1和python 3.7支持。
- 一般代码清理。
v1.3(2018-01-09):
- 添加了丢失的数据库迁移。
- 新的templateTag 附件计数
- 从磁盘中删除附件的新设置 如果附件型号被删除。
- 新设置 文件上载最大大小 值
v1.2(2017-12-15):
- Django 1.11和2.0兼容性和测试。
v1.1(2017-03-18):
- Django 1.10兼容性和测试。
- python 3.6兼容性和测试。
- 修复模型中外键命名为其他项的问题 而不是"id"。
v1.0.1(2016-06-12):
- 增加了芬兰语翻译。
- 小测试套件改进。
v1.0(2016-03-19):
常规代码清理以保持与最新django的兼容性 (目前向上1.8)以及蟒蛇3。引入完整的测试套件。
向后不兼容 :附件视图现在使用urlpattern 命名空间 因此需要调整urlpattern:
url(r'^attachments/', include('attachments.urls', namespace='attachments')),
- 向后不兼容:变量名周围的引号
必须删除:
INSTALLED_APPS = ( ... 'attachments', )
5- 可能是向后不兼容的 :旧版本有错误
权限,但没有在所有位置强制执行。从现在起 相关权限 添加附件 和 删除附件 必须 已应用于所有相关用户。
v0.3.1(2009-07-29):
- 在自述文件中添加了一条说明,说明您应该保护静态文件。
v0.3(2009-07-22):
此版本添加了有关用户权限的更细粒度控件。你需要 要显式地向应该能够上载的用户添加权限, 删除或删除外来附件。
这可能是向后不兼容的,因为您不需要指定 以前添加/删除权限!