среда, 10 июля 2013 г.

Создание меню сайта в Django

Вот есть у нас простой Сайт о костюмах для танцев живота:

Рис. 1

Нам нужно, чтобы владелец сайта мог сам редактировать пункты меню через админку Django. Для этого мы используем стороннее приложение django-menu.

Так будет выглядеть интерфейс этого приложения в админке после подключения:

Рис. 2.

Установка приложения django-menu:


1. Скачать с github архив django-menu.

2. Скопировать из скачанного архива папку menu в свой проект.

3. В настройках вашего проекта settings.py:

3.1. подключить это приложение:
INSTALLED_APPS = (
    # ...
    'menu',
)

3.2. добавить контекстный процессор django.core.context_processors.request:
TEMPLATE_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.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
    
    # Этот контекстный процессор следует добавить: 
    "django.core.context_processors.request",
)
 
4. Создать таблицы для данного приложения, выполнив команду:
manage.py syncdb
или
manage.py migrate menu (если вы используете south)

5. Зайти в админку Django и в появившемся приложении Меню создать, к примеру, меню с названием "Главное меню", код - main_menu (см. рис. 2).

6. В шаблоне (к примеру, base.html) использовать данное приложение:
    {% load menubuilder %} {% menu main_menu %} {% for item in menuitems %} <li {% if item.current %}class="active"{% endif %}> <a href="{{ item.url }}" title="{{ item.title|escape }}">{{ item.title }}</a> </li> {% endfor %}

Как видно, данное приложение может определять текущий пункт меню, что позволяет нам выделять его назначением определенного класса css (в нашем примере это класс "active").

Комментариев нет:

Отправка комментария