Есть ли рекомендуемый подход для обработки AppConfig при разработке приложения для Django 1.6 и 1.7?

Django 1.7 представил новый способ обработки конфигурации приложения, который не зависит от models.py, Однако метод использования нового AppConfig требуется эта строка:

from django.apps import AppConfig

К сожалению, это сломается в Django 1.6, так как нет apps модуль.

Возможно ли, чтобы приложение было совместимо с 1.6 и 1.7, используя условный импорт, или это вопрос разделенных кодовых баз? Если да, то есть ли рекомендательное руководство, желательно от разработчиков Django, о том, как это сделать?

2 ответа

Решение

Как насчет использования AppConfig, только если версия django>= 1.7 (учтите это и в файле __ 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'

Я не уверен насчет официально предложенного 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

Другие вопросы по тегам