Django - 导入模块context_processors时出错

时间:2014-05-22 16:57:59

标签: django

新手问题。

我正在尝试创建我的第一个自定义上下文处理器

我的settings.py

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

)

我的项目目录名为" mmaprophet",所以我创建了一个名为" context_processors"的文件夹,在其中,我创建了一个名为" seasons.py&#34的文件;。该文件包含上面定义的活动函数。

my 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

2 个答案:

答案 0 :(得分:1)

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

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

  

需要__init__.py个文件才能使Python将目录视为包含包;这样做是为了防止具有通用名称的目录(例如字符串)无意中隐藏稍后在模块搜索路径上出现的有效模块。


您的Python路径也不包含项目的根目录,您应该添加它以便能够从那里导入内容。

答案 1 :(得分:1)

问题是因为我使用了与我的应用程序相同的名称&#34; season&#34;作为我的context_processors文件夹中的文件&#34; seasons.py&#34;

现在它完美无缺。