首页 > 解决方案 > 我可以像处理模型或视图一样使用 Django 从文件夹中的文件导入函数吗?

问题描述

Django 3.0models.py中,不要像往常一样将所有模型放在一个文件中:

my_project/
├── my_project/
└── my_app/
    ├── models.py
   ...

您可以创建一个models/文件夹并将每个模型放在一个单独的文件中,并在将其添加到__init__.py文件后正常调用。

my_project/
├── my_project/
└── my_app/
    ├── models/
    │   ├── __init__.py
    │   ├── my_models_file.py
    │   └── my_other_models_file.py
   ...

models/__init__.py应该看起来像这样:

from .my_models_file import *
from .my_other_models_file import *

models.MyExampleModel的 in mymy_models.py可以在我的其他文件中正常调用,如下所示:

from .models import MyExampleModel


# My code

这也是可能的views

这是我的问题:
是否可以对非 Django 相关文件进行相同的处理?

我有几个views.py不是意见的功能。他们不渲染任何东西。这些是用于使其中一些可重用的简单 python 函数。

# My imports


# My view rendering something


def my_function(arg):
    # Do something


def my_other_function(arg):
    # Do something

我想将它们放在一个文件夹中,并将每个函数放在一个单独的文件中。有这样的东西:

my_project/
├── my_project/
└── my_app/
    ├── my_functions/
    │   ├── __init__.py
    │   ├── my_functions_file.py
    │   └── my_other_functions_file.py
   ...

我试图用类似的东西导入它但没有成功。

from my_functions.my_functions_file import my_function

def new_function():
    my_function(arg)

有类似的方法吗?它的目的是保持文件尽可能干净和可读。我不喜欢在我的文件中有很多与非视图相关的功能,我views.py想将它们放在自己的文件夹中。

感谢您的帮助。如果我不清楚,请询问更多信息。

标签: pythondjangofunctiondirectoryinit

解决方案


用这个

from my_app.my_functions.my_functions_file import my_function

推荐阅读