【问题标题】:Can I import a function from a file in a folder with Django as I would do with the models or views?我可以像处理模型或视图一样使用 Django 从文件夹中的文件导入函数吗?
【发布时间】: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 中有很多与非视图相关的功能,我想将它们放在自己的文件夹中。

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

【问题讨论】:

标签: python django function directory init


【解决方案1】:

使用这个

from my_app.my_functions.my_functions_file import my_function

【讨论】:

  • 我的错,它完美运行。问题不存在,但现在已解决。所以在这种情况下不需要 init 。无论如何,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 2017-01-10
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多