在为Django 1.6和1.7设计应用程序时,是否有推荐的方法来处理AppConfig?

时间:2014-10-17 00:50:07

标签: python django version-compatibility

Django 1.7 introduced a new way for handling application configuration的{{3}}独立于models.py。但是,使用新AppConfig的方法需要以下行:

from django.apps import AppConfig

不幸的是,由于没有apps模块,这将在Django 1.6中中断。

是否可以使用条件导入使应用程序与1.6和1.7兼容,或者是否需要拆分代码库?如果有,是否有推荐指南,最好来自Django开发者如何做到这一点?

2 个答案:

答案 0 :(得分:9)

我不确定正式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,它将使用此MyAppConfig,否则myapp/apps.py模块将被忽略,并且它将与之前的django< 1.7

一样工作

答案 1 :(得分:4)

仅当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'
相关问题