我的django应用程序结构如下
home/damon/dev/me/myproject/
manage.py
/mytracker/
__init__.py
settings.py
urls.py
/monitor/
/media/
/mymonitor/
__init__.py
models.py
views.py
urls.py
/templates/
base.html
home.html
在.bashrc中,我将PYTHONPATH
设为/home/damon/dev/me/myproject/
并在settings.py中为MEDIA_ROOT和TEMPLATE_DIR
添加了这些值MEDIA_ROOT = 'home/damon/dev/me/myproject/mytracker/monitor/media'
MEDIA_URL = '/site_media/'
TEMPLATE_DIRS = (
'home/damon/dev/me/myproject/mymonitor/templates'
)
mytracker.urls.py有
url(r'',include('mymonitor.urls')),
url(r'^site_media/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.MEDIA_ROOT}),
而mymonitor.urls.py有
...
url(r'^$','mymonitor.views.home',
{'template_name':'home.html',
'page_title':'Home'
},
name='home'),
..
base.html由home.html扩展
{% extends "base.html" %}
{% block content %}
Your Home
{% endblock %}
我认为pythonpath,文件的位置一切都正确完成..但我得到一个TemplateDoesNotExist错误
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.4
Exception Type: TemplateDoesNotExist
Exception Value:
[{'page_title': 'Home'}, {'csrf_token': <django...
views.py有
def custom_render(request,context,template):
req = RequestContext(request,context)
return render_to_response(req)
def home(request,template_name,page_title):
context = {'page_title':page_title}
return custom_render(request,context,template_name)
我无法弄清楚为什么会发生这种情况。如何诊断此错误..?有人可以告诉我吗?
答案 0 :(得分:2)
应该是render_to_response(template)
而不是render_to_response(req)
。
以下是Django文档的片段:
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
此外,TEMPLATE_DIRS
中的相对路径应为绝对(即从斜杠开始,比如/home/damon/...
)。因此filesystem.Loader
找不到您的模板。
这只是一个建议。 TemplateResponse
比老派render_to_response
更令人敬畏和冷静。
答案 1 :(得分:2)
TEMPLATE_DIRS
,因为app_directories.Loader
(默认情况下已启用)应该为您执行此操作,如果您的应用程序位于INSTALLED_APPS
。TEMPLATE_DIRS
中的'/'('home / ...'而应该是'/ home /...')你现在拥有的TEMPLATE_DIRS
只是字符串(在括号中,这里忽略了括号),它应该是tuple
所以你需要在你的路径后添加逗号:
TEMPLATE_DIRS = (
'/home/damon/dev/me/myproject/mymonitor/templates',
)