0

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

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

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

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

当然,我可以构建一个 per-view 类并使用self.__class_.__name__或其他东西;我对一种简单且成熟的 Django 惯用方式感兴趣,它存在。

我正在使用 Django 1.4。

4

1 回答 1

0

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

from django.core.urlresolvers import resolve


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

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

{{ view_name }} 

于 2013-07-02T22:53:12.773 回答