Django应用程序,可轻松创建额外的管理对象工具。
项目描述
Django Object Tools
Django应用程序,可轻松创建额外的管理对象工具。
需求
- Python 2.7, 3.5-3.7 
- Django 1.11, 2.0, 2.1 
安装
- 将django-object-tools安装或添加到您的Python路径中。 
- 将object_tools添加到您的INSTALLED_APPS设置中。django-object-tools会覆盖某些管理模板,因此您必须在其前面添加它,即django.contrib.admin。 
- 连接URLConf。通过将给定的URL指向tools.urls方法来完成此操作。在这个例子中,我们将默认的Tools实例object_tools.tools注册到URL/object-tools/。 - # urls.py from django.conf.urls.defaults import * from django.conf.urls import url import object_tools urlpatterns = [ path('object-tools/', object_tools.tools.urls) ]
- 显然,Django Admin自身需要安装,具体请参阅此处。 
- 每次安装新工具时,请记住运行migrate来设置权限。 
使用
django-object-tools本身在提供有用工具方面并不做什么。它的目的是简化由其他Django应用程序提供的自定义工具的创建和集成。为此,它负责处理诸如权限和管理模板集成等繁琐的细节,让您可以专注于有趣的事情。
作为一个例子,让我们创建一个允许您删除所有对象的工具。是的,这有点复杂,但它是一个很好的玩具示例,用于说明目的。查看django-export和django-order,了解如何使用django-object-tools的真正工具。
首先,根据常规方式创建Django应用程序文件夹结构,根目录命名为delete,包括一个名为tools.py的文件。它应该看起来如下所示
delete/
    __init__.py
    tools.py
编辑tools.py以如下所示
from django.contrib.admin.actions import delete_selected
from django.contrib.admin.sites import site
import object_tools
class Delete(object_tools.ObjectTool):
    name = 'delete'
    label = 'Delete all'
    def view(self, request, extra_context=None):
        queryset = self.model.objects.all()
        modeladmin = site._registry.get(self.model)
        response = delete_selected(modeladmin, request, queryset)
        if response:
            return response
        else:
            return modeladmin.changelist_view(request)
object_tools.tools.register(Delete)让我们逐行分析
- object_tools的行为类似于Django的admin,允许您显式注册工具,请参阅第17行。它还提供了ObjectTool基类。 
- 导入Django提供的delete_selected方法。这个方法将做所有繁重的工作。 
- 创建一个继承自object_tools.ObjectTool的工具类。所有对象工具都必须继承自object_tools.ObjectTool。ObjectTool提供了各种方法来简化工具的创建。有关更多详细信息,请参阅object_tools.options.py。 
- 将工具名称设置为delete。这必须是一个唯一名称,用于标识工具。这用于在内部唯一标识工具以及设置权限。 
- 将标签设置为Delete all。标签在admin中显示,而不是名称,因此您可以指定一个更详细、更友好的标签。 
- 实现view方法。这是您的工具的大脑。当用户执行您的工具时,会调用view方法,因此您的工具逻辑应该在这里。这可以是任何返回HttpResponse对象的视图代码。在这种情况下,我们包装Django内置的delete_selected以提供表单、逻辑和模板代码来执行实际删除。 
- 使用object_tools注册工具,从而使其在admin中显示。 
要启用工具,请将delete添加到您的INSTALLED_APPS设置中。
现在,当您导航到任何模型的更改列表视图时,您将在右上角找到delete all对象工具。
单击delete all工具将触发视图并按常规删除对象。
注意: django-object-tools 为内置默认Django权限集添加了每个工具的权限。因此,在这个例子中,只有超级用户或者具有“可以删除 <模型>”权限的用户才能查看和使用该工具。如果您看不到或无法使用某个特定工具,请确保认证用户有执行该操作所需的权限。
变更日志
2.00
- Django 2.0 & 2.1 兼容性。 
- 添加了coveralls。 
- 弃用了对Django 1.11以下版本的支持。 
1.11
- Django 1.11 兼容性。 
- 弃用了对Django 1.9以下版本的支持。 
1.9
- Django 1.9 兼容性。 
1.0.3
- 修复了Django 1.4 templatetag问题。 
1.0.2
- Django 1.7 兼容性。 
1.0.1
- 修复了与Django 1.5+ url templatetags的兼容性问题。 
1.0.0
#. 修复了与Django新版本的兼容性问题。然而,这可能与Django 1.4之前的版本不兼容。
0.0.7
- 将上下文传递给object_tools标签。感谢 slafs 
0.0.6
- 修复了“str”对象没有属性“has_perm”的错误 #7。 
0.0.5
- 在模板中移除“ADMIN_STATIC_PREFIX”的使用,以便迁移到Django 1.4。 
0.0.4
- 更好的打包。 
0.0.3 (2011-09-15)
- 正确解析标题。 
0.0.1 (2011-07-22)
- 初始发布。 
项目详情
django-object-tools-2.0.0.tar.gz的哈希
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 3ce7321be9cf757c630555a21fa21b497dd676df282ae99821e40d0851532972 | |
| MD5 | f60cb1b5f3e177031ed67bfd609c8c08 | |
| BLAKE2b-256 | da3e74da69bef308656b4bd31d2ba1650b39ae63a33d048dd684f1f56fb42fbd |