8

Django 1.7では、アプリケーション構成を処理するための新しい方法が導入されましmodels.py。ただし、 new を使用する方法には次のAppConfig行が必要です。

from django.apps import AppConfig

apps残念ながら、モジュールがないため、これは Django 1.6 で壊れます。

条件付きインポートを使用してアプリを 1.6 および 1.7 と互換性を持たせることは可能ですか、それともコード ベースの分割の問題ですか? もしそうなら、できればDjango開発者からの推奨ガイドはありますか?

4

2 に答える 2

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 の場合は this を使用しますMyAppConfig。それ以外の場合、myapp/apps.pyモジュールは単純に無視され、django<1.7 の場合と同じように動作します。

于 2015-02-05T01:17:13.677 に答える
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'
于 2015-02-08T11:45:58.037 に答える