Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2010 13:24:27

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Да … это я понял … :) Я имел ввиду сам контролер тега menu - его прийдется постоянно описывать в каждой вьюхе ?
Я так понял надо подробней копнуть в сторону написания своих тегов … Так как с ними еще не разбирался …



Офлайн

#2 Март 11, 2010 13:29:28

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Контроллеры тегов кладутся в папку templatetags внутри вашего приложения см. доки. Джанга при встрече в шаблоне тега оттуда будет доставать их описание. в вьюхе ниче повторять не нада.



Офлайн

#3 Март 12, 2010 00:41:06

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

а приложение обязательно создавать ? без приложения это реализовать никак ?



Офлайн

#4 Март 12, 2010 13:14:22

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Berg
а приложение обязательно создавать
когда вы создаете проект у вас есть как минимум одно главное приложение вот там и создавайте.



Офлайн

#5 Март 12, 2010 13:33:29

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Berg
а приложение обязательно создавать ? без приложения это реализовать никак ?
Приложения созданы для того, чтобы разделять логику работы вашего приложения на отдельные слабосвязные части. И это хороший подход. Если ваше приложение не требует такого разбиения, то делайте, как говорит Evg



Офлайн

#6 Март 12, 2010 17:51:50

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Вобщем написал я “Тег включения” - в нем выводится меню - все ок …. , но вот столкнулся такой проблемой - как в функции-обработчике (там где я формирую это меню )этого тега получить например адрес текущего запроса ? чтоб определить какой из пунктов нужно сейчас подсветить ?



Офлайн

#7 Март 12, 2010 18:23:52

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Сделайте чтобы тег брал контекст далее в нем все есть - request.uri

@register.inclusion_tag('tag.html', takes_context=True)
def tag(request):
return {}



Офлайн

#8 Март 12, 2010 20:22:31

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Berg
как в функции-обработчике (там где я формирую это меню )этого тега получить например адрес текущего запроса ?
request.META
request.META



Офлайн

#9 Март 13, 2010 01:49:17

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

regall
request.META
request.META
Evg
Сделайте чтобы тег брал контекст далее в нем все есть - request.uri
Код:

@register.inclusion_tag('tag.html', takes_context=True)
def tag(request):
return {}
в таком случае первый параметр согласно документации должен быть context, а не request ?

request - эта ж переменная создается только если код размещен в файле view.py, а у меня ж это “Тег включения” - и файл я назвал nav_menu.py в папке templatetags в папке приложения …

а на request ругается :
Exception Type: TemplateSyntaxError
Exception Value:

Caught an exception while rendering: global name ‘request’ is not define

если б было все так просто - я б не писал :)



Отредактировано (Март 13, 2010 02:32:21)

Офлайн

#10 Март 13, 2010 12:22:26

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

да да я перепутал)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version