我知道我可以“将它存储在我的python路径中的任何地方”以及所有这些,但是我可以用来为我的项目存储中间件类的有组织模式是什么?
我将项目根目录和项目目录通过mod_wsgi附加到sys路径:
sys.path.append( '/srv/' )
sys.path.append( '/srv/workarounds/' )
后一行是项目根目录。举个例子,假设我想应用这个中间件类:http://djangosnippets.org/snippets/1179/
我是否只需将代码段内容复制到middleware.py文件中并将其转储到我的项目根目录中?为中间件创建一个目录,将该目录添加到我的python路径?
答案 0 :(得分:5)
我常用的django网站布局是:
projects/
templates/
common/
local/
其中:
我通常将项目特定于项目的中间件放在项目中,而中间件不是特定于项目的共同/中间件/
确保将templates目录添加到设置中的正确位置(或者很可能是localconfig.py,然后在设置中导入它),并确保将项目,公共和本地目录添加到PYTHONPATH。 / p>
答案 1 :(得分:4)
如果您只有几个紧密耦合的中间件类,则将它们放入app根目录下的middleware.py
模块中。 (django.contrib
应用就是这样做的 - 请参阅会话的应用中间件here)。
如果您有许多不同的中间件类,请使用相关中间件类的子模块创建中间件pacakge。虽然如果你最终遇到这种情况,考虑如何将你的项目重构为几个迷你应用程序,这些应用程序都解决了特定需求(并开源它们:))。
就个人而言,我有一个共同的django包,我将常见的中间件(如你的链接的LoginRequiredMiddleware
类)转储到middleware
包中。如果这在你的项目环境中有意义,我会强烈建议。它节省了我无数个小时的重复和错误修复。 django-common和django-annoying是此类项目布局的好例子