2017-11-26 23 views
-1

DjangoのINSTALLED_APPSは、最終的にwsgi-applicationのdevops girl/guyが責任を持つ設定ファイルのリストです。再帰的なアプリケーションの依存関係django

しかし、アプリケーションを作成するときに、私はしばしばdjango-bootstrap4のような他のアプリケーションのテンプレートとテンプレートタグを使用します。唯一このテンプレートproividesことを、簡単なbootstrap4-とバターのアプリを考えてみましょう:DevOpsチームは、インストールしてINSTALLED_APPS bs4wbに追加するため

bs4wb/templates/bs4wb/base.html

{% extends "bootstrap4/bootstrap4.html" %} 

{% block bootstrap4_extra_head %} 
<script> confirm('with butter?!'); </script> 
{% endblock bootstrap4_extra_head %} 

それは十分ではありませんが、彼らはまた、実行する必要がありますdjango-bootstrap4と同じですし、django-bootstrap4からdjango-bootstrap5`などにアップグレードするたびに私が使用していたバージョンを把握しておく必要があります。つまり、私は変更可能な余分なステップを文書化する必要があります。

どのように再帰INSTALLED_APPSを指定できますか? app-unionのようなものがありますか?例えば、(明らかに醜い構文、申し訳ありません):bs4wbINSTALLED_APPSに追加されるたびに互いに隣接してbootstrap4bs4wbを挿入する

export('bs4wb', app_by_union(['bootstrap4', 'bs4wb'])) 

インストールしたアプリにbootstrap4が追加されていない場合は、例外を発生させるだけで、追加する必要があります。

+0

あなたはvirtualenvを使用していますか?一度あなたがインストールされているすべてをしていない 'ピップフリーズ'を行う必要がありますか?説明したように、ローカルマシンにこのすべてをインストールします(pip freeze> requirements.txt)。そして、配備している人は 'pip install -r requirements.txt'を使ってインストールできます。 – Withnail

+0

問題は、要件がサイトパッケージにインストールされているかどうかではなく、問題が適切な順序で 'INSTALLED_APPS'に追加されているかどうかです。 – Herbert

+0

なぜ誰かが票を落とすと、その理由についてコメントしていないのですか?あなたが私に平凡な質問をし続けたいなら、説明しないでください。 – Herbert

答えて

0

アプリ開発者は通常、djangoのsystem check frameworkを使用して、環境が要件を満たしていることを確認します。

別のアプリがINSTALLED_APPSに含まれているかどうかを確認し、そうでない場合はエラーを追加します。

それはその(未テスト)のようになります。あなたの要件は、新しいバージョンに変更する場合は

from django.conf import settings 
from django.core.checks import Error, register 

@register() 
def bootstrap4_check(app_configs, **kwargs): 
    errors = [] 
    if not 'django-bootstrap4' in settings.INSTALLED_APPS: 
     errors.append(
      Error('django-bootstrap4 needs to be in INSTALLED_APPS') 
     ) 
    return errors 

:チェックを調整します。

+0

このコードはどこに置かれますか?すべてのhttp-requestに対して実行されますか? – Herbert

+0

私たちは通常、これを** app_root/checks.py **に入れません。このファイルは自動的にロードされません。そのため、** app_root/__ init __。py **: 'fromにも含まれています。輸入小切手 ' – dahrens

関連する問題