为什么下面的第2种说法在功能上等同于第1种说法也不行?
from django.shortcuts import render # works
import django.shortcuts.render as render # doesn't work
这个错误正在告诉你原因。render
不是一个模块。
一个可能会让你更清楚的例子--让我们试着从下面的模块中导入一个函数 math
模块。
>>> import math.pow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pow
>>> from math import pow
>>>
该模块: pow
函数不是一个模块,但可以导入符号(即函数)。从 该模块(math
).
render()
在 django.shortcuts是一个函数。. 这不是一个模块。
因为... render
是一个函数,而你只能 import
模块。
您可以 from a_module import an_object
但你只能 import a_module as whatever
.
这是因为你必须要运行 import django
或 from django.(whatever you want) import (your func or var)
. Python不喜欢当你调用 import (your module).(whatever path)
因为这样你就会导入一个路径。还有 django.shortcuts.render
不是现有的模块,您必须导入 render
这是一个函数。
原因是 render()
是一个函数,从 django.shortcuts
模块。
在python中只能导入模块,不能直接导入函数。
所以你可以这样做。
from module import specific_function
或者干脆
import module
或只对模块进行别名
import module as xyz
或从模块中别名一个特定的函数
from module import specific_function as abc