Django 1.7引入了一种处理应用程序配置的新方法,它独立于models.py
. 但是使用 new 的方法AppConfig
需要这一行:
from django.apps import AppConfig
不幸的是,这将在 Django 1.6 中中断,因为没有apps
模块。
是否有可能使用条件导入使应用程序与 1.6 和 1.7 兼容,还是拆分代码库的问题?如果是这样,是否有推荐指南,最好是来自 Django 开发人员的关于如何这样做的指南?
Django 1.7引入了一种处理应用程序配置的新方法,它独立于models.py
. 但是使用 new 的方法AppConfig
需要这一行:
from django.apps import AppConfig
不幸的是,这将在 Django 1.6 中中断,因为没有apps
模块。
是否有可能使用条件导入使应用程序与 1.6 和 1.7 兼容,还是拆分代码库的问题?如果是这样,是否有推荐指南,最好是来自 Django 开发人员的关于如何这样做的指南?
我不确定 django 官方建议的方式,但我会这样做:
# myapp/apps.py
try:
from django.apps import AppConfig
except ImportError:
AppConfig = object
class MyAppConfig(AppConfig):
# put all the necessary stuff for AppConfig
# myapp/__init__.py
default_app_config = 'myapp.apps.MyAppConfig'
这样,如果它是 django>=1.7 它将使用 this MyAppConfig
,否则myapp/apps.py
模块将被简单地忽略,并且它将与 django<1.7 之前一样工作
仅当 django 版本 >= 1.7 时才使用 AppConfig 怎么样(在 __ init __.py 文件中也考虑到这一点):
# myapp/apps.py
from django import VERSION as DJANGO_VERSION
if DJANGO_VERSION >= (1, 7):
from django.apps import AppConfig
class MyAppConfig(AppConfig):
...
# myapp/__init__.py
from django import VERSION as DJANGO_VERSION
if DJANGO_VERSION >= (1, 7):
default_app_config = 'myapp.apps.MyAppConfig'