Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2013 13:38:34

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Создание меню

Для меню проще написать свой templatetag с передачей контекста(чтобы можно было бы определить активный пункты меню, etc)

Офлайн

#2 Авг. 9, 2013 13:53:47

od-5
Зарегистрирован: 2013-08-01
Сообщения: 17
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание меню

FishHook
Сам тоже пришёл к варианту вывода меню в более “статичном” виде, что бы не заводить лишние, на мой взгляд, связи в модели.
Я наверно не точно выразился - в вашем примере:

# templatetags/custom_tags.py
@register.tag(name="menu_entry")
def menu_entry(parser, token):
    try:
        menu_item_name = token.split_contents()[1]
    except ValueError:
        raise template.TemplateSyntaxError("%r error" % token.contents.split()[0])
    return ContextMenuNode(menu_item_name)
class ContextMenuNode(template.Node):
    def __init__(self, menu_item_name):
        self.menu_item_name = menu_item_name
    def render(self, context):
        menu_entry = context["menu_entry"]
        if menu_entry == self.menu_item_name:
           return "class=active"
        return
последняя строчка “return” ничего не возвращает. Можете исправить, что бы был полностью рабочий вариант?

Офлайн

#3 Авг. 9, 2013 16:24:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание меню

od-5, она возвращает None, то есть ее вообще можно убрать, функция все равно возвратит None, а None попав в шаблон отобразится как пустая строка, а нам это и нужно. То есть тут нет ошибки.



Офлайн

#4 Авг. 10, 2013 15:28:23

od-5
Зарегистрирован: 2013-08-01
Сообщения: 17
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание меню

FishHook
Извиняюсь, был не прав

Офлайн

#5 Окт. 2, 2013 00:26:51

od-5
Зарегистрирован: 2013-08-01
Сообщения: 17
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание меню

FishHook
Кстати, вы не будете против, если я пример вашего кода у себя на сайтике размещу (сайт сугубо личный, не комерческий - так сказать записная книжка про Django, написанная на Django)?

Отредактировано od-5 (Окт. 2, 2013 00:27:07)

Офлайн

#6 Окт. 2, 2013 09:31:09

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание меню

od-5
FishHookКстати, вы не будете против, если я пример вашего кода у себя на сайтике размещу (сайт сугубо личный, не комерческий - так сказать записная книжка про Django, написанная на Django)?
Да бога ради!



Офлайн

#7 Окт. 11, 2013 01:48:46

od-5
Зарегистрирован: 2013-08-01
Сообщения: 17
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание меню

Кстати, None, попав в шаблон отображается именно как “none”, т.е. получаем строку вида <li none >…
что работу шаблона собственно не нарушает, но всё же.

Прикреплённый файлы:
attachment 2013-10-11-024829_1024x600_scrot.png (177,7 KБ)

Офлайн

#8 Окт. 22, 2013 21:56:02

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Создание меню

Замените None на ''

Офлайн

#9 Окт. 22, 2013 22:24:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание меню

В джанге есть фильтр default для таких случаев

<li {{ something|default:"" }} >



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version