python - 在几个文件中拆分views.py

标签 python django

我的 views.py 太大了,很难找到合适的 View 。

如何将其拆分为多个文件然后导入?是否涉及速度损失?

我可以对 models.py 做同样的事情吗?

最佳答案

在 Django 中,一切都是 Python 模块 (*.py)。您可以创建一个包含 __init__.py 的 View 文件夹,您仍然可以导入您的 View ,因为这也实现了一个 Python 模块。但是举个例子会更好。

您的原始 views.py 可能如下所示:

def view1(arg):
    pass

def view2(arg):
   pass

使用以下文件夹/文件结构,它的工作方式相同:

views/
   __init__.py
   viewsa.py
   viewsb.py

viewsa.py:

def view1(arg):
    pass

viewsb.py:

def view2(arg):
    pass

__init__.py:

from viewsa import view1
from viewsb import view2

快速的解释是:当你写from views import view1 Python会在

中寻找view1
  1. views.py,这是第一个(原始)案例中发生的情况

  2. views/__init__.py,就是第二种情况。在这里,__init__.py 能够提供 view1 方法,因为它导入了它。

使用这种解决方案,您可能无需更改 urls.py

中的 importurlpattern 的参数

如果您在每个新 View 文件中都有许多方法,您可能会发现在 views/__init__.py 中使用 * 进行导入很有用,如下所示:

from viewsa import *
from viewsb import *

我实际上不知道速度问题(但我怀疑是否存在)。

对于模型来说,这可能有点困难。

关于python - 在几个文件中拆分views.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921771/

相关文章:

python - MapReduce:加入数据文件并汇总信息

python - 如何从 Linux 上的文件路径获取详细的设备/分区信息(如 UUID、硬盘序列号等)

python - Pygame 按键声音

django - 如何使用 django rest 框架禁用 HTML 错误页面的返回?

python - 获取 检查 'apps.ChatbotConfig.name' 是否正确。重组后

python - 从字典中获取单个键的最佳方法?

Python类装饰器扩展类导致递归

python - celery 使用错误的经纪人

django - 浏览器阻止跨域 iframe cookie

python - Django IntegrityError 与 DateTimeField