Dark_Knight
@Dark_Knight
Game Dev

Как добавить к пункту меню нужный класс в зависимости от URL?

Здравствуйте.
Подскажите пожалуйста.
Есть меню на сайте: ГЛАВНАЯ — НОВОСТИ — КОНТАКТЫ
При переходе по любой ссылке этого меню, нужный пункт в меню красится в красный цвет. Как это сделать?
Нужно, что-то менять в urls.py или views.py и что именно подскажите пожалуйста.
#views.py
def Owners(request):  
    return render_to_response('base.html')

#urls.py
urlpatterns = patterns('owners.views',
    url(r'^$', 'Owners'),
)
</sourse>
  • Вопрос задан
  • 2775 просмотров
Решения вопроса 1
@mike_k
views.py:
from django.shortcuts import render, get_object_or_404
def someview(request, slug=None):
    some_obj = 
    return render(
        request,
        'someapp/someobject_detail.html',
        {
            'object': get_object_or_404(SomeObject, slug=slug),
            'funky_page': True, # <--
        }
    )

someobject_detail.html:
<link href='{{ STATIC_URL }}css/style.css' rel='stylesheet' type='text/css'>
...
<li{% if funky_page %} class="funky"{% endif %}"></li>
...

style.css:
li.funky { background-color: red; }

Если всё-таки начать с пошагового процесса создания Django-проекта, часть вопросов отпадёт сама собой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mike_k
Способ «в лоб»: передавать переменную из view в template, по наличию которой добавлять css-класс к тому или другому пункту.
Можно сравнивать URI и named url-pattern или заполнять в нужном шаблоне специальный block, используемый в родительском для css-класса.
Общего же и подходящего под все случаи решения не видать. Поищите «django active link».
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы