导入基于 Django 的通用 class 视图时出现混淆
Confusion when importing Django' generic class based views
在浏览参考文档和一些教程时,我看到了 Django 的通用 class 基于视图的导入以多种方式使用:
from django.views.generic import TemplateView, ListView
或者:
from django.views.generic.base import TemplateView
from django.views.generic.list import ListView
我已经尝试过两种策略,它们似乎都有效,但第一个选项似乎不太正确。
所有通用 CBV 是否也存在于通用模块和子模块中? Python 是否可以仅通过导入更高的模块从子模块中导入 classes?这里到底发生了什么?
如有任何帮助,我们将不胜感激!
Django like Python 说要明确具体,你会在官方文档中找到Django导入所有通用视图的方式如下:
from django.views.generic import CreateView
阅读此行时,您了解您正在导入泛型视图,而且只有一个。
来自关于导入的文档:
Whenever possible, be as explicit as possible with imports.
除了最后一个,我会说一切都很好,这个关于 PEP8 的糟糕实践
经过一些挖掘,似乎在 django.views.generic.__init__.py 中导入了所有其他通用 CBV,允许在 django.views.generic 中有意访问它们。这似乎是导入通用 CBV 的标准化方式。
在浏览参考文档和一些教程时,我看到了 Django 的通用 class 基于视图的导入以多种方式使用:
from django.views.generic import TemplateView, ListView
或者:
from django.views.generic.base import TemplateView
from django.views.generic.list import ListView
我已经尝试过两种策略,它们似乎都有效,但第一个选项似乎不太正确。
所有通用 CBV 是否也存在于通用模块和子模块中? Python 是否可以仅通过导入更高的模块从子模块中导入 classes?这里到底发生了什么?
如有任何帮助,我们将不胜感激!
Django like Python 说要明确具体,你会在官方文档中找到Django导入所有通用视图的方式如下:
from django.views.generic import CreateView
阅读此行时,您了解您正在导入泛型视图,而且只有一个。
来自关于导入的文档:
Whenever possible, be as explicit as possible with imports.
除了最后一个,我会说一切都很好,这个关于 PEP8 的糟糕实践
经过一些挖掘,似乎在 django.views.generic.__init__.py 中导入了所有其他通用 CBV,允许在 django.views.generic 中有意访问它们。这似乎是导入通用 CBV 的标准化方式。