django附件是将文件(附件)附加到任何模型的通用django应用程序。

django-attachments的Python项目详细描述


django附件

django attachments是一组通用的模板标记,可以附加任何类型的 文件到模型。

安装:

  1. 附件 放到 设置中已安装的应用程序中。py 在您的django项目中:

    INSTALLED_APPS = (
        ...
        'attachments',
    )
    
  2. 将附件urlpattern添加到您的 urls.py

    url(r'^attachments/', include('attachments.urls', namespace='attachments')),
    
  3. 迁移数据库:

    ./manage.py migrate
    
  4. 授予用户一些权限:

    • 对于添加附件,授予用户(或组)权限 附件。添加附件
    • 对于删除附件,授予用户(或组)权限 附件。删除附件。这允许用户删除 仅限附件。
    • 对于删除外部附件(其他用户的附件),授予 用户的权限 附件。删除外部附件
  5. 如果要删除,请将"从磁盘中删除附件"设置为"真"。 删除附件对象时磁盘上的文件!

  6. 配置文件上载最大大小(可选)。这是 引发表单验证错误之前的字节数。如果未设置,则没有限制 文件大小。

  7. < > >

小心你的档案!

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,)
http://cloud.github.com/downloads/barttc/django-attachments/attachments\u屏幕

在前端模板中:

首先,在要使用的每个模板中加载附件标记:

{% load attachments_tags %}

django附件附带了一些用于添加或删除附件的模板标记 用于前端的模型对象。

  1. 获取[对象]的附件:获取给定对象的附件 模型实例。您可以选择定义一个变量名,其中 list存储在模板上下文中(这在django 1.8中是必需的)。如果 您不定义变量名,而是打印结果。

    {%get_attachments作为"attachments_list"%}条目

  2. 附件计数[对象] :计数给定的附件 对实例建模并返回int:

    INSTALLED_APPS = (
        ...
        'attachments',
    )
    
    0
  3. 附件表单 :呈现上载表单以添加给定的附件 模型实例。例子:

    INSTALLED_APPS = (
        ...
        'attachments',
    )
    
    1

    如果当前用户未登录,则返回空字符串。

  4. 附件删除链接:为给定的 附件 。例子:

    INSTALLED_APPS = (
        ...
        'attachments',
    )
    
    2

    此标记自动检查权限。如果 give n attachment的创建者是当前登录的用户,或者该用户具有 删除外部附件 权限。

  5. < > >

快速示例:

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')),
    
  • < DL>
    向后不兼容:变量名周围的引号

    必须删除:

    INSTALLED_APPS = (
        ...
        'attachments',
    )
    
    5
    < DL>
    可能是向后不兼容的 :旧版本有错误

    权限,但没有在所有位置强制执行。从现在起 相关权限 添加附件 删除附件 必须 已应用于所有相关用户。

v0.3.1(2009-07-29):

  • 在自述文件中添加了一条说明,说明您应该保护静态文件。

v0.3(2009-07-22):

  • 此版本添加了有关用户权限的更细粒度控件。你需要 要显式地向应该能够上载的用户添加权限, 删除或删除外来附件。

    这可能是向后不兼容的,因为您不需要指定 以前添加/删除权限!

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

推荐PyPI第三方库


热门话题
JavaSpring重定向请求处理程序   SwingJava:拆分字符串并将其放入文本区域的   Java:标记“”上出现语法错误,此标记后面应为表达式   web服务Java RestService从日志文件写入和读取数据   java如何将ArrayList<String>转换为char数组,然后向后打印每个单词?   java SimpleDataFormat解析返回年终日期   加密Java aes解密bytebuffer,包括填充为空字节   java有没有办法从特定的if语句调用变量?   java从更新返回到渲染   spring GRPC Java登录测试   java为什么下面的代码不工作(StringBuffer.toString!=null)   java是一种可行的模式吗?   使用Spring集成测试的JavaOSGi片段   java jCommander为未知和未使用的值引发异常?   在imageView的editText中输入的java图像URL