将当前Django视图的名称传递给模板的最佳方法是什么?

时间:2013-07-02 16:24:02

标签: django view

假设我有一个这样的视图处理程序:

@require_GET
def FooView(request):
  # do stuff...
  return render_to_response(
    'foo.html',
    {
      # some data...
      'current_view': 'FooView' # the eyesore
    }
  )

我需要'current_view'值来标记当前菜单项,面包屑等。

是否有一种简单/既定的方法可以使当前视图名称可用于模板?

当然,我可以构建一个每视图类并使用self.__class_.__name__或其他东西;我对一个简单的建立的,Django-idiomatic 方式感兴趣,它存在。

我正在使用Django 1.4。

1 个答案:

答案 0 :(得分:0)

您可以使用上下文处理器来填充此信息并自动将其存储在所有模板中

from django.core.urlresolvers import resolve


def custom_context_processor(request):
    return {'view_name': resolve(request.path)[0]}

您可以在设置中将此上下文处理器添加到TEMPLATE_CONTEXT_PROCESSORS元组中。这样您就可以在每个模板中访问它,如下面的代码段所示:

{{ view_name }}