1

我的 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)

我无法弄清楚为什么会发生这种情况。如何诊断此错误..?有人可以告诉我吗?

4

2 回答 2

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

于 2013-05-31T16:28:01.733 回答
2
  1. 在这种情况下,您不应该修改TEMPLATE_DIRS,因为app_directories.Loader(默认启用)应该为您完成,如果您的应用程序位于INSTALLED_APPS.
  2. 您可能忘记了路径中的“/” TEMPLATE_DIRS(“home/...”应该是“/home/...”)
  3. TEMPLATE_DIRS现在拥有的只是字符串(在此处忽略括号的括号中),它应该是 atuple所以您需要在路径后添加逗号:

    TEMPLATE_DIRS = (
                    '/home/damon/dev/me/myproject/mymonitor/templates',
                    )
    
于 2013-05-31T17:05:58.870 回答