【问题标题】:Django: Where to put helper functions?Django:在哪里放置辅助函数?
【发布时间】:2009-12-16 04:44:50
【问题描述】:

我写了几个函数,需要在我的 django 应用程序中使用。我应该把文件放在哪里?如何让它们在我的视图中可调用?

【问题讨论】:

    标签: python django


    【解决方案1】:

    我通常将此类特定于应用程序的辅助函数放在文件 utils.py 中并使用类似这样的东西

    from myapp.utils import my_cool_func
    
    def view_coolness(request):
        data = my_cool_func(request)
        return render_to_response("xxx.html")
    

    但这取决于你的助手做什么,可能是他们修改 request ,可能是中间件的一部分,所以你需要告诉你这些助手函数到底做了什么

    【讨论】:

    • 在代码中提及应用程序通常是个坏主意。只需执行 from utils import my_cool_func 即可,无需重新说明您已经在其中的应用程序的名称。
    • @Peter Bengtsson,可能是,但是如何在包中的模块中导入实用程序,例如我有几个视图模块的视图文件夹,然后是中间件文件夹等
    • 哇 2009 年非常不同。基本上,如果某事可以用更少的语言说出来,那就用更少的语言说出来。如果您决定重命名它,那么不受名称束缚也是一件好事。
    • 意味着你不能轻易移动模块,例如
    • 我会使用from .utils import func
    【解决方案2】:

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

    使用例如 git repo 来存储此应用并管理部署和演变(子模块)

    使用公共 git 存储库,以便与社区分享 :)

    【讨论】:

      【解决方案3】:

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

      如果它们不是特定于某个应用的,我会为跨应用共享的组件(测试、模型、函数等)制作一个 commons 应用。

      【讨论】:

      • 这是最好的解决方案
      【解决方案4】:

      我在 app 文件夹中使用新的 python 文件 service.py。该文件主要包含特定应用程序的帮助查询。我还曾经在 Django 应用程序中创建一个文件夹,其中包含全局帮助函数和常量。

      【讨论】: