Django: 辅助函数应该放在哪里?

87

我编写了一些函数需要在Django应用程序中使用。我该把这个文件放在哪里,并如何使它们在我的视图中可调用?

4个回答

98

我通常将这种特定于应用程序的辅助函数放在 utils.py 文件中,并使用类似以下代码:

from myapp.utils import my_cool_func

def view_coolness(request):
    data = my_cool_func(request)
    return render_to_response("xxx.html")

但这取决于您的辅助函数做了什么,也许它们修改了请求,可能是中间件的一部分,因此您需要说明这些辅助函数实际上是做什么的。


25
在代码中提及应用程序通常是不明智的。只需执行 from utils import my_cool_func 即可,无需重新声明已经在其中的应用程序名称。 - Peter Bengtsson
3
@Peter Bengtsson,也许可以,但是如何在包的模块中导入utils呢?例如,我有一个views文件夹,其中有几个视图模块,然后是middleware文件夹等。 - Anurag Uniyal
2
哇,2009年真的很不同。基本上,如果一件事可以用更少的话来表达,就用更少的话来表达。此外,如果您决定重命名它,不被名称所束缚也是一件好事。 - Peter Bengtsson
1
意味着您不能轻易移动模块,例如。 - dalore
2
我会使用 from .utils import func - joshlsullivan
显示剩余2条评论

19

如果与特定应用相关,我通常会将它们放在相关的应用程序文件夹中,并命名文件为“functions.py”。

如果不是特定于某个应用程序,则创建一个commons应用程序来存储跨应用程序共享的组件(测试、模型、函数等)。


这是最佳解决方案。 - Koushik Das

19

创建一个可重用的应用程序,其中包含您的通用函数,以便在项目之间共享。

例如,使用git存储库来存储此应用程序并管理部署和演进(子模块)

使用公共git存储库,这样您就可以与社区共享 :)


4

我正在使用应用文件夹中的新 Python 文件 service.py。该文件主要包含特定应用程序的辅助查询。此外,我还创建了一个文件夹,其中包含全局辅助函数和常量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接