2

これが私のフォルダー構造です(黒塗りはすべてプロジェクトの名前です。「myproject」と仮定してください):

ここに画像の説明を入力

ホームページをhttp://mydomain.com/テンプレート HTML として設定したいと考えています。したがって、この SO 投稿url.pyに続いて、これを私のmyprojectプロジェクト フォルダーに設定します。

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView 

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', TemplateView.as_view(template_name="index.html")),
    url(r'^events/', include('events.urls', namespace='events')),
    url(r'^admin/', include(admin.site.urls)),
)

しかし、Django はこのパスをイベント フォルダーに追加しようとし続けます。ブラウザからのDEBUG = True出力は、このテンプレートが次の場所に見つからないことを示しています。

/home/ubuntu/django/myproject/events/templates/templates/myproject/index.html

もちろん、これは私が指摘しようとしていたものではありません。これを修正するにはどうすればよいですか?

4

3 に答える 3

0

Django は、設定で指定したさまざまなフォルダーと、設定がある場合は各アプリのフォルダーでindex.htmlテンプレートを見つけようとします。TEMPLATE_DIRStemplatesTEMPLATE_LOADERS'django.template.loaders.app_directories.Loader'

テンプレートの読み込みに関する詳細情報

于 2013-10-21T05:10:54.980 に答える
0

TEMPLATE_DIRS を定義し、次のような絶対パスを使用する必要があります。

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
...
TEMPLATE_DIRS = (
    os.path.join(PROJECT_PATH, 'templates'),
)
...

アプリケーションとテンプレートのフォルダーが別のフォルダーにある場合は、次の方法で TEMPLATE_DIRS を定義できます。

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
...
TEMPLATE_DIRS = (
    os.path.join(PROJECT_PATH, 'events', 'templates'),
    os.path.join(PROJECT_PATH, 'templates'),
)
...

次のように、テンプレートをレンダリングするようにビューを変更することを忘れないでください。

...
return render_to_response('events/index.html',{},context_instance=RequestContext(request))
...

編集:

プロジェクトの URL を次のように変更します。

from events import urls
...

urlpatterns = patterns('',
    ...
    url(r'^events/', include('events.urls', namespace='events')),
    ...
)
于 2013-10-21T05:11:23.207 に答える