Django 中实用函数应该放在哪里?

新手上路,请多包涵

Django 中实用函数应该放在哪里?自定义加密/解密数字、发送推文、发送电子邮件、验证对象所有权、自定义输入验证等功能。我在我的应用程序的许多地方使用了重复和自定义的东西。我现在肯定要喝醉了。

我看到一些演示在 models.py 中定义了函数,尽管这在我看来在概念上并不正确。他们应该进入导入到我的项目中的“实用程序”应用程序吗?如果是这样,它们在实用程序应用程序中的位置在哪里? models.py 文件在那里?

感谢您帮助这个 n00b。

更新: 让我更具体一点。假设我需要一个函数“light_encrypt(number)”,它接受参数“number”,将其乘以 7,加 10 并返回结果,另一个函数“light_decrypt(encr_number)”接受参数“encr_number”,减去 10,除以 7 并返回结果。我应该把它放在我的 Django 树中的什么位置?这不是中间件,对吧?正如 Felix 所建议的,我是否创建一个 python 包并将其导入到我需要这些功能的视图中?

原文由 mitchf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 770
2 个回答

不同的 问题 但相同的答案:

我通常的 django 网站布局是:

 projects/
templates/
common/
local/

在哪里:

  • projects 包含您的主要项目和任何其他项目
  • common 包含你可以跨站点共享的东西,或者至少不是特定于项目的东西,比如你需要下载 django-profile 和 django-registration 而不是直接在 python/site-packages 中
  • 模板仅包含
  • local 包含特定于当前机器的内容,以便您可以正确分离数据,例如数据库位置和密码 - 然后我将特定于机器的版本(比如“machine1-localconfig.py”)软链接到local/localconfig.py 然后可以在 settings.py 中“导入 localconfig”
  • 我通常将项目特定的中间件放在项目中,而不是项目特定的中间件放在 common/middleware/
  • 确保将模板目录添加到设置中的正确位置(或者最有可能是 localconfig.py,然后将其导入设置中),并确保将项目、公共目录和本地目录添加到 PYTHONPATH。

原文由 eruciform 发布,翻译遵循 CC BY-SA 3.0 许可协议

好的,在阅读了这里的评论和回答后,我决定在我的项目目录中创建一个名为“common/util/”的目录。在其中我有一个文件“__ init__.py”,其中包含我的小辅助函数。

我想如果文件太大,我会把函数拆分成单独的 .py 文件。所以现在,我的项目结构如下所示。如果我做出任何错误的选择,请更正,我的开发还很早,我现在可以修复它,而这样做仍然很容易!

 myproject/         (Django project)
  common/
    util/
      __init__.py  (helper functions)
  middleware/      (custom middleware)
  templates/       (project templates)
  myapp/
    fixtures/      (initial data to load)
    migrations/    (south migrations)
    urls/
    views/
    admin.py
    forms.py
    models.py
    test.py

 public/           (static stuff not served by Django)
   media/
     css/
     img/
     js/
     lib/

原文由 mitchf 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题