我的设置文件定义如下(config / settings.py):
HOST='localhost'
PORT='9001'
当我在视图中导入设置并按如下方式打印每个设置的值时,它会正确打印(views / user.py):
from ..config import settings
print settings.HOST
print settings.PORT
但是当我从内部使用或打印相同的值时,它会给出错误(views / user.py):
from ..config import settings
print settings.HOST
print settings.PORT
@handle_error
def usersettings():
print settings.HOST
print settings.PORT
在上述文件中调用时,函数def会产生如下错误:
ERROR:root:'function' object has no attribute 'HOST'
Traceback (most recent call last):
File "/home/rahul/mywebapp/webapp/views/utils.py", line 36, in decorated_view
return_value = func(*args, **kwargs)
File "/home/rahul/mywebapp/webapp/views/utils.py", line 27, in decorated_view
return func(*args, **kwargs)
File "/home/rahul/mywebapp/webapp/views/user.py", line 344, in usersettings
print settings.HOST
AttributeError: 'function' object has no attribute 'HOST'
utils.py有装饰视图,名为handle_error
我的包结构如下:
mywebapp/
run.py
webapp/
__init__.py
views/
__init__.py
utils.py
user.py
config/
__init__.py
settings.py
仅供参考:这项工作一直持续到昨晚,突然间它开始表现出奇怪的上述错误。我在这做什么是错的?
编辑:
我的 init .py如下:
from .utils import *
from .user import *
答案 0 :(得分:3)
在import
语句之后,可能会在settings
之前声明或导入名为usersettings
的函数。 Python现在将名称settings
识别为该函数,而不是您导入的模块。
为确保不会发生这种情况,您可以在导入后直接放置所需的部件:
from ..config import settings
HOST = settings.HOST
PORT = settings.PORT
...
您可以在以后随时访问它:
def usersettings():
print HOST, PORT
希望这有帮助!