これは孤立した問題かもしれませんが、誰かがそれに対処するための優雅なアプローチについて考えている場合に備えて質問したいと思います。
セットアップは次のとおりです。
--------
views.py
--------
from django.http import HttpResponse
import shortcuts
def mood_dispatcher(request):
mood = magic_function_to_guess_my_mood(request)
return HttpResponse('Please go to %s' % shortcuts.MOODS.get(mood, somedefault))
------------
shortcuts.py
------------
MOODS = # expensive load that causes a reverse to happen
問題は、django が URL の構築を完了する前にリバースを試行すると、shortcuts.py によって例外がスローされることです。ただし、views.py はまだ Shortcuts.py をインポートする必要はありません (mood_dispatcher が実際に呼び出される場合にのみ使用されます)。明らかな初期の解決策は次のとおりです。1) ショートカットをインラインでインポートする (スタイル的にあまり良くない) 2) Shortcuts.py で MOODS を遅延ビルドする (作業が増えるだけ)
私が理想的に望むのは、views.py の上部で、「URL の読み込み時以外はショートカットをインポートする」と言うことができることです。