This question already has answers here:
Importing installed package from script raises “AttributeError: module has no attribute” or “ImportError: cannot import name”
(3个答案)
4年前关闭。
如果我从命令行启动python并输入:
它为我打印一个随机数(预期为优)。
如果我在django应用程序的models.py中包含上述两行,并使用runserver启动django应用程序,我会在命令行上得到输出,向我显示一个随机数(太好了!)
如果我采用自定义标签,否则效果很好
作为自定义标签的.py文件的前两行,每当尝试打开使用该自定义标签的模板时,都会收到错误消息:
请记住,如果我摆脱了这两行,我的自定义标签的行为将与预期的一样,并且不会引发任何错误。不幸的是,我需要在模板标签内进行一些随机行为。
问题是,如果我在自定义标签中这样做:
在自定义模板标签上,它会导入
并不是
就像通常从其他地方进口的一样
Django模板库有一个名为random的过滤器,它以某种方式比系统的random优先级更高。
任何人都可以推荐如何显式导入适当的python random吗?
(3个答案)
4年前关闭。
如果我从命令行启动python并输入:
import random
print "Random: " + str(random.random())
它为我打印一个随机数(预期为优)。
如果我在django应用程序的models.py中包含上述两行,并使用runserver启动django应用程序,我会在命令行上得到输出,向我显示一个随机数(太好了!)
如果我采用自定义标签,否则效果很好
import random
print "Random: " + str(random.random())
作为自定义标签的.py文件的前两行,每当尝试打开使用该自定义标签的模板时,都会收到错误消息:
TypeError at /help/
'module' object is not callable
请记住,如果我摆脱了这两行,我的自定义标签的行为将与预期的一样,并且不会引发任何错误。不幸的是,我需要在模板标签内进行一些随机行为。
问题是,如果我在自定义标签中这样做:
import random
在自定义模板标签上,它会导入
<module 'django.templatetags.random' from '[snip path]'>
并不是
<module 'random' from 'C:\\Program Files\\Python26\\lib\\random.pyc'>
就像通常从其他地方进口的一样
Django模板库有一个名为random的过滤器,它以某种方式比系统的random优先级更高。
任何人都可以推荐如何显式导入适当的python random吗?
最佳答案
答案很奇怪。
最初编写自定义标签时,我将其称为random.py
。我很快意识到这个名称可能不好,因此将其重命名为randomchoice.py
并删除了我的random.py
文件。 Python保留了编译后的random.pyc
文件,并且每当我执行import random
时都会加载该文件。我删除了random.pyc文件,问题消失了。
关于python random.random()导致在自定义模板标记中使用 "'模块的对象“不可调用”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/837916/