Найти - Пользователи
Полная версия: Создание меню
Начало » Django » Создание меню
1 2
hulygun
Для меню проще написать свой templatetag с передачей контекста(чтобы можно было бы определить активный пункты меню, etc)
od-5
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” ничего не возвращает. Можете исправить, что бы был полностью рабочий вариант?
FishHook
od-5, она возвращает None, то есть ее вообще можно убрать, функция все равно возвратит None, а None попав в шаблон отобразится как пустая строка, а нам это и нужно. То есть тут нет ошибки.
od-5
FishHook
Извиняюсь, был не прав
od-5
FishHook
Кстати, вы не будете против, если я пример вашего кода у себя на сайтике размещу (сайт сугубо личный, не комерческий - так сказать записная книжка про Django, написанная на Django)?
FishHook
od-5
FishHookКстати, вы не будете против, если я пример вашего кода у себя на сайтике размещу (сайт сугубо личный, не комерческий - так сказать записная книжка про Django, написанная на Django)?
Да бога ради!
od-5
Кстати, None, попав в шаблон отображается именно как “none”, т.е. получаем строку вида <li none >…
что работу шаблона собственно не нарушает, но всё же.
hulygun

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

FishHook
В джанге есть фильтр default для таких случаев
<li {{ something|default:"" }} >
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB