新手问题。
我正在尝试创建我的第一个自定义上下文处理器
我的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
答案 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;
现在它完美无缺。