2013-07-02 4 views
0

Предположим, у меня есть обработчик вида, как это:Лучший способ передать текущее имя вида Django в шаблон?

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

мне нужно значение «Текущее_представление» для маркировки текущего пункта меню, хлебных крошек и т.д.

Есть простой/создан способ сделать текущее имя вида доступно для шаблона?

Конечно, я могу построить класс для просмотра и использовать self.__class_.__name__ или что-то в этом роде; Я заинтересован в простой и создан, Django-idiomatic образом, он существует.

Я использую Django 1.4.

+0

класса общие представления должны автоматически добавить 'view' переменную в контексте, который указывает на' View' пример. https://docs.djangoproject.com/en/dev/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin.get_context_data И если все остальное не удается, вы можете просто добавить свои собственные переменная в 'get_context_data' – Ngenator

+0

@Ngenator: спасибо, это хорошо, но я застрял с Django 1.4. (Обновлен мой вопрос.) – 9000

+0

Может быть, context_processors? –

ответ

0

Вы можете использовать Контекстный процессор, чтобы заполнить эту информацию, и он автоматически во всех вас шаблонах

from django.core.urlresolvers import resolve 


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

вы можете добавить, чем этот контекст процессор в настройках для кортежа TEMPLATE_CONTEXT_PROCESSORS. Таким образом, вы можете получить доступ к нему в каждом шаблонах, как в следующем фрагменте:

{{ view_name }} 
основе

Смежные вопросы