2014-05-22 76 views
0

新手问题给你。Django - 错误导入模块context_processors

我想创建我的第一个自定义背景处理器

我settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'mmaprophet.context_processors.seasons.active' 

) 

我的项目目录称为“mmaprophet”,所以我创建了一个名为“context_processors”的文件夹,并在它创建了一个名为“seasons.py”的文件。该文件包含上面主动定义的功能。

我seasons.py

from seasons.models import Season 


def active(request): 
    ''' 
    A context processor to add the "active season" to the current Context 
    ''' 

    active_season = Season.objects.get(active=True) 

    return {'active_season': active_season} 

但后来我得到这个错误:

ImproperlyConfigured at/
Error importing module mmaprophet.context_processors.seasons: "No module named models" 
Request Method: GET 
Request URL: http://127.0.0.1:8000/ 
Django Version: 1.6.2 
Exception Type: ImproperlyConfigured 
Exception Value:  
Error importing module mmaprophet.context_processors.seasons: "No module named models" 
Exception Location: /home/ymorin007/workspace/sites/mmaprophet.com/src/mmaprophet/context_processors/seasons.py in <module>, line 2 
Python Executable: /home/ymorin007/.virtualenvs/mmaprophet/bin/python 
Python Version: 2.7.6 
Python Path:  
['/home/ymorin007/workspace/sites/mmaprophet.com/src', 
'/home/ymorin007/workspace/sites/mmaprophet.com/src', 
'/home/ymorin007/.virtualenvs/mmaprophet/lib/python2.7', 
'/home/ymorin007/.virtualenvs/mmaprophet/lib/python2.7/plat-x86_64-linux-gnu', 
'/home/ymorin007/.virtualenvs/mmaprophet/lib/python2.7/lib-tk', 
'/home/ymorin007/.virtualenvs/mmaprophet/lib/python2.7/lib-old', 
'/home/ymorin007/.virtualenvs/mmaprophet/lib/python2.7/lib-dynload', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/home/ymorin007/.virtualenvs/mmaprophet/local/lib/python2.7/site-packages'] 
Server time: Thu, 22 May 2014 13:13:31 -0400 

回答

1

您需要添加一个空__init__.py文件中声明该文件夹作为一个Python模块。您可以从位于__init__.py的文件夹中的文件或仅从当前文件夹导入。

你可能知道它,但作为一个提醒,from the documentation

The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path.


你的Python路径不包括你的项目的根也,你应该将它添加到能够从进口的东西那里。

+0

仍然是同样的错误。我已将__init__.py添加到context_processors。我使用PyCharm,并通过选择New Python Package创建了context_processors文件夹。 – Yannick

+0

你可以尝试没有项目名称吗?只是'context_processors.seasons.active'?另外请记住添加Django的默认元素,如果你需要他们:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS –

+0

好吧,它现在不是同一个错误:错误导入模块mmaprophet.context_processors.seasons:“没有模块命名模型” – Yannick

1

的问题是因为我用了相同的名称,我的应用“四季”的文件在我的context_processors文件夹“seasons.py”

现在,它完美的作品。