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
  1. TEMPLATE_DIRSこの場合は変更しないapp_directories.Loaderでください。アプリケーションがINSTALLED_APPS.
  2. おそらくパスの '/' を忘れているでしょうTEMPLATE_DIRS('home/...' は '/home/...' である必要があります)。
  3. あなたTEMPLATE_DIRSが今持っているのは単なる文字列です(ここでは括弧は無視されます)、tupleパスの後にカンマを追加する必要があるはずです:

    TEMPLATE_DIRS = (
                    '/home/damon/dev/me/myproject/mymonitor/templates',
                    )
    
于 2013-05-31T17:05:58.870 に答える
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 に答える