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

8 python django version-compatibility

Django的1.7已经推出了用于处理应用程序配置了新的途径,是独立的models.py.但是,使用new的方法AppConfig需要以下行:

from django.apps import AppConfig
Run Code Online (Sandbox Code Playgroud)

不幸的是,这将在Django 1.6中打破,因为没有apps模块.

是否可以使用条件导入使应用程序与1.6和1.7兼容,或者它是否是分割代码库的问题?如果是这样,是否有推荐指南,最好是来自Django开发者如何这样做?

leh*_*ins 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'
Run Code Online (Sandbox Code Playgroud)

这样,如果它是django> = 1.7,它将使用它MyAppConfig,否则myapp/apps.py模块将被简单地忽略,并且它将与之前的django <1.7一样工作


小智 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'
Run Code Online (Sandbox Code Playgroud)