【发布时间】:2020-11-12 09:39:01
【问题描述】:
在 Django 3.0 中,不要像往常一样将所有模型放在一个 models.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 *
而我的my_models.py 中的models.MyExampleModel 可以在我的其他文件中正常调用,如下所示:
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 中有很多与非视图相关的功能,我想将它们放在自己的文件夹中。
感谢您的帮助。如果我不清楚,请询问更多信息。
【问题讨论】:
-
进口的快速谷歌 - realpython.com/absolute-vs-relative-python-imports - 这应该为您提供最相关的信息。
标签: python django function directory init