这可能是一个孤立的问题,但我想我会问,以防有人对优雅的方法有想法来解决它。
这是设置:
--------
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的顶部说“导入快捷方式,加载网址时除外”