0

特定のディレクトリの下にあるすべてのテンプレートを表示する TemplateView を作成したいと思います。

たとえば、私は

/staticpages/about-me.html
/staticpages/about-you.html
/staticpages/about-us.html

...

(もっとたくさん)

私のurls.pyには..

url(r'^(?P<page_name>[-\w]+)/$', StaticPageView.as_view()),

..

私のviews.pyには

class StaticPageView(TemplateView):
    def get_template_names(self):
        return 'staticpages/%s' % self.kwargs['page_name']

ただし、誰かが URL /staticpages/blahblah.html (存在しない) にアクセスすると、このビューによって受け入れられ、テンプレートが見つからないというエラーが生成されます。テンプレートが見つからない場合、どうすれば 404 にリダイレクトできますか?

または、これを行うより良い方法はありますか?

4

1 に答える 1

0

テンプレートディレクトリを提供するプロジェクト設定の使用を検討できます。その後、os.listdir ( http://docs.python.org/library/os.html#os.listdir ) を使用して、そのディレクトリに存在するすべてのテンプレートを一覧表示できます。これを達成する方法は次のとおりです。(次のコードはテストされていません。アイデアを提供するためのものです)

テンプレートのリストは次のように表示できます。

# views.py
import os
from django.conf import settings

template_directory = os.path.join(settings.TEMPLATE_DIRS,'sub_directory')
templates = os.listdir(template_directory)
return render_to_response('template_list.html')

対応するテンプレート ファイル..

# template_list.html
<ul>
{% for template in templates %}
  <li> <a href="/{{template}}"> {{template.filename}} </a> </li>
{% endfor %}
</ul>

それが役立つことを願っています..

于 2012-02-15T06:20:26.567 に答える