从 Django 1.7 开始AppConfig
添加了功能,建议将 post_migrate 信号放入ready()
其定制实施的一部分 -https://docs.djangoproject.com/en/stable/ref/signals/#post-migrate https://docs.djangoproject.com/en/stable/ref/signals/#post-migrate
基本实施方式AppConfig
文档描述的是指向它__init__.py
文件使用default_app_config
环境。该文档还建议了一种覆盖现有的方法AppConfig
对于任何应用程序:https://docs.djangoproject.com/en/stable/ref/applications/#for-application-users https://docs.djangoproject.com/en/stable/ref/applications/#for-application-users
我研究了一下,发现 django 实际上创建了AppConfig
每个应用程序的实例INSTALLED_APPS
即使未实现其自定义实现,它也会为您引导默认值。
我的问题是如何提供定制的应用程序配置post_migrate
未实现的应用程序的信号AppConfig
(最简单的例子是没有 apps.py 的第三方包)?
我知道即使对于这个应用程序,django 也会创建一个默认版本AppConfig
但我应该在哪里以及如何告诉它不要这样做并使用我的自定义AppConfig
而是用覆盖的ready()
方法实现添加post_migrate
?
让我们假设您希望为 django Crispy_forms 创建一个自定义 AppConfig(您已将其安装到 virtualenv 中)。
步骤1:在项目中创建一个名为crispy_forms的文件夹。
第 2 步:创建一个__init__.py
在该文件夹中并粘贴以下内容
from django.apps import AppConfig
default_app_config = 'crispy_forms.apps.MyAppConfig'
步骤3:在crispy_forms文件夹中创建apps.py并粘贴
from django.apps import AppConfig
class MyAppConfig(AppConfig):
verbose_name = 'customized crispy_forms'
name = "crispy_forms"
def __init__(self, app_name, app_module):
AppConfig.__init__(self,app_name, app_module)
print 'My app config', app_name, app_module
如果 django 没有重新加载类,请重新启动开发服务器,然后您将看到类似以下内容的内容:
My app config crispy_forms <module 'crispy_forms' from '/home/xxx/project/crispy_forms/__init__.pyc'>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)