Django应用程序之间的动态注册。

django-appregistration的Python项目详细描述


Django评估

这个应用程序提供了一个基类来轻松实现django应用程序,它允许 在其中注册部件的其他应用程序。

要求:

  • django>;=1.6

安装

  • 从pip存储库中: pip install django appregation
  • 或者直接从github: pip安装git+git://github.com/nb dev/django apregistration.git

用法

Django AppRegistration为注册 来自其他应用程序的模块: multilistpartregistry 单列部件注册表 。而两者都有相同的基础 功能,在多个不同列表中 可以收集的对象中,只有 包含一个列表。

要在应用程序中实现partregistry,请创建 …部件注册表 或您在您的 申请。有S您可以在 子类:

  • 部分类 (必需):对象的(父)类 允许插入注册表
  • 调用函数的子路径(必需):函数的子路径 由注册表在加载时调用(详细信息,请参见下文)
  • 忽略"django"命名空间(默认值:true):如果为true,则任何应用程序 从django开始。 在您的 已安装的应用程序中, 将被忽略 加载时间。

要防止将任意项插入注册表,请 …PartRegistry 类检查每个添加的元素是否为实例 设置为 注册表。

当注册表尝试从安装的应用程序加载元素时 遍历应用程序并尝试,为每个应用程序获取子模块/ 在调用函数子路径中定义的函数。然后 检查检索到的对象是否可调用,如果可以,则调用它 注册表本身作为唯一的调用参数。

要在注册表中注册元素,因此需要实现 在 在已安装的应用程序中列出。然后,实现的函数需要 在传递的注册表上调用 add_item 函数。

为了进一步简化动态应用程序的使用,该应用程序提供了 筛选可用应用程序的功能 只返回当前可用的 安装。这允许django的高度动态配置 允许有选择地安装某些应用程序的项目。使用它 your settings.py 将可用的应用程序动态添加到 已安装的应用程序

文件:settings.py
from django_appregistration import filter_available_apps
INSTALLED_APPS = [
    'imported_app1',
    'imported_app2',
    'imported_app3',
    ...
] + filter_available_apps(
    'optional_app1',
    'optional_app2',
    'optional_app3',
    ...
)

示例

下面是一个实现示例,其中 可扩展应用程序和扩展应用程序的应用程序 注册表

文件:可扩展的
from django_appregistration import MultiListPartRegistry

class MyRegisterable(object):
   pass

class MyRegistry(MultiListPartRegistry):
   part_class = MyRegisterable
   call_function_subpath = 'registerable.register'

文件:扩展app.registerable.py
def register(registry):
   # import inside the function so that the import is only needed if the registry is used
   # and the package is therefore available
   from extendable_app.registry import MyRegisterable

   registry.add_part('default', MyRegisterable())
   registry.add_part('other', MyRegisterable())

这样,当注册表是 加载,一个在列表 默认值中,另一个在列表 其他值中。

可以像这样检索对象:

from extendable_app.registry import MyRegistry
default_parts = MyRegistry.get('default') # retrieves the `default` list
other_parts = MyRegistry.get('other') # retrieves the `other` list

API

API文档

多列表部件注册表(对象)

提供以下功能:

添加部件(列表,部件)

part 参数给定的部分添加到具有名称的列表中 由 列表参数给出。

获取(列表)

返回列表中名为 列表的部分 参数。元素在返回之前进行排序。

分类零件(零件)

可以重写以定义部件的自定义顺序。默认值 函数只返回无序的列表。

加载()

调用时,初始化类并将可用部分加载到 它的列表缓存。如果已调用 load() 则不执行任何操作。是 由 get() 函数自动调用。不用打电话 除非要在第一个 检索列表。

复位()

将注册表重置为其初始状态,以便 下次调用 load() 函数时重新加载。通常在那里 不需要调用它,因为它只会在部件 需要重新加载。

单列部件注册表(多列部件注册表)

另外还提供以下功能:

添加部件(部件)

part 参数给定的部分添加到列表中。

获取()

返回列表中的部件。元素在排序之前 返回。

运行测试

通过运行 测试/运行测试.py 脚本。你需要安装django和mock 让他们逃跑。如果您还想运行覆盖率,则需要安装 在运行测试之前进行此操作

更改日志

v0.0.6(2017-05-19)

  • 修复自述标题级别

v0.0.5(2017-05-19)

  • 添加对django 1.10和1.11的支持

v.0.0.4

  • 添加用于检查 提供可用的应用程序。

v.0.0.3

  • 错误修复:还将 锁和加载的 属性移动到 元类

v.0.0.2

  • 错误修复:使用元类分隔 多列表部件注册表 。在每个注册表使用相同的列表之前 如果使用了多个注册表,则会导致元素混合

v.0.0.1a

  • 在类中将 类型重命名为 列表

v.0.0.1

  • 多类型部件注册表的初始实现 单一类型部件注册表

维修人员

本项目由Northbridge Development Konrad&;维护。 施耐德GBR 软件中心.

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

推荐PyPI第三方库


热门话题
c#Java Tcp服务器和。Net Tcp客户端的发送和接收问题   安卓应用程序上的java标记地理位置,其位置位于我周围5Km半径范围内。   向java添加对话框并检索html文件   当eclipse甚至无法打开时,java会在eclipse中更改不兼容的JVM   java中同一jframe中的jlabel和paintComponent   基于另一数组排序的java排序   java AADSTS7000012:该补助金是为另一个租户获得的   java在JSF中使用foreach循环   java如何通过maven为运行junit测试创建运行配置?   java Selenium webDriver不稳定错误堆栈跟踪   java有没有办法创建以键为大写的JSON对象?