Есть ли рекомендуемый подход для обработки 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