检查Django中是否存在模板的最有效方法是什么?我正在考虑捕获TemplateDoesNotExist异常,但也许有更多的Djangoistic方法来做到这一点?
谢谢你的帮助!
bfo*_*met 33
如果您打算使用模板(如果存在)并默认使用第二个模板,那么最好使用select_template:
django.template.loader.select_template(['custom_template','default_template'])
Run Code Online (Sandbox Code Playgroud)
这将加载列表中的第一个现有模板.
Fáb*_*niz 21
我认为如果不捕获此异常,您将无法执行此操作,但您可以django.template.loader.get_template(template_name)在try语句中使用而不是使用render_to_response的乐观主义调用.(如果你还没有这样做......)
小智 7
这是我实施的内容,这取决于法比奥的答案.我不知道这是否是最好的方法,但它对我来说是预期的.
from django.views.generic import TemplateView
from django.http import Http404
from django.template.loader import get_template
from django.template import TemplateDoesNotExist
from absolute.menu.models import Menu # specific to my app
class BasicPublicView(TemplateView):
model = Menu #specific to my app
def dispatch(self, request, *args, **kwargs):
try:
self.template_name = request.path[1:] + '.html'
get_template(self.template_name)
return super(BasicPublicView, self).dispatch(request, *args, **kwargs)
except TemplateDoesNotExist:
raise Http404
Run Code Online (Sandbox Code Playgroud)
如果模板存在,这允许我从templates目录动态提取模板.例如,http://example.com/products/keyboards将尝试获取模板/templates/products/keyboards.html
| 归档时间: |
|
| 查看次数: |
7895 次 |
| 最近记录: |