我想创建一个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吗?
或者还有更好的方法吗?
答案 0 :(得分: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>
希望有所帮助..