Создадим простое и гибкое меню на сайте, которым можно будет управлять через админку Django.
Установка приложения
Зайдите в директорию проекта и установите приложение для работы с меню.
git clone https://github.com/selevit/mymenu
Добавьте mymenu
в INSTALLED_APPS
.
INSTALLED_APPS = (
# ...
'mymenu',
)
Добавьте mymenu.context_processors.context
в TEMPLATE_CONTEXT_PROCESSORS
.
TEMPLATE_CONTEXT_PROCESSORS = (
# ... (default context processors)
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
# MyMenu context
'mymenu.context_processors,context',
)
Выполните команду python manage.py syncdb
для обновления структуры БД.
Добавление меню
Теперь зайдите в админку и добавьте новое меню.
Вы можете задать атрибуты title
и target
у определенного пункта.
Вывод меню в шаблоне
Поле slug
будет использоваться для вывода меню в шаблоне.
Вы можете добавить другие меню и использовать поле slug
для доступа к ним. Пункты каждого меню доступны в {{ menu.<menu_slug>.items }}
.
{% for menu_item in menu.top.items %}
{% ifequal request.get_full_path menu_item.url %}
<span class="active">{{ menu_item.name }}</span>
{% else %}
<a href="{{ menu_item.url }}"
{% if menu_item.title %}
title="{{ menu_item.title }}"
{% endif %}
{% if menu_item.target %}
target="{{ menu_item.target }}"
{% endif %}>{{ menu_item.name }}</a>
{% endifequal %}
Комментарии к статье: 4
Возможность комментировать эту статью отключена автором. Возможно, во всем виновата её провокационная тематика или большое обилие флейма от предыдущих комментаторов.
Если у вас есть вопросы по содержанию статьи, рекомендуем вам обратиться за помощью на наш форум.