Найти - Пользователи
Полная версия: Простое меню с помощью Django
Начало » Django » Простое меню с помощью Django
1 2 3 4
Berg
Доброго времени суток всем!

Вобщем работаю с питоном 3 дня … До этого писал на PHP немного. Немного не могу расставить для себя все точки над i чтоб окончательно понимать как это работает.

Вобщем задача простая … пусть есть некоторое меню, которое размещено на всех страницах проекта такой структуры….

<ul>
<li><a href=“/” title=“Главная” class=“sidebar_home” id=“sidebar_active_button”></a></li>
<li><a href=“/product/” title=“Продукты” class=“sidebar_products”></a></li>
<li><a href=“/contact/” title=“Контакты” class=“sidebar_contacts”></a></li>
</ul>


id=“sidebar_active_button” - это идентификатор текущего активного пункта меню ….

в PHP это было просто - в глобальном основном файле я просто проверял что щас выбрано … , как это правильно сделать в Django, с условием, что ссылка на /product/ - будет разбиваться еще на подгруппы ?

Я не совсем понимаю как сделать так чтоб некоторый код программы выполнялся ( и генерировал переменные для шаблонов в папке template - для base.html например ) при загрузке странички по любой ссылке…

Заранее благодарен за ответы :)
regall
http://code.google.com/p/django-treemenus/
Berg
Готовые решения - это конечно хорошо, но я в них не улавливаю сути до конца так как не знаю еще языка хорошо, вот и пробую изучать на простых примерах … Вы мне мой случай можете помочь понять как реализовать ? Без баз, без админки - все поидее просто должно быть - не могу понять этот момент - как сделать что-то чтоб выполнялось глобально :(
regall
Berg
Я не совсем понимаю как сделать так чтоб некоторый код программы выполнялся ( и генерировал переменные для шаблонов в папке template - для base.html например ) при загрузке странички по любой ссылке…
Для начала забудьте все, что вы помните о PHP :D.
Django-book на русском. На оф. сайте пройдите Туториал - сразу въедете что, как и почему выполняется.
А лучше всего возьмите для начала книгу по основам Питона (в прикрепленной теме этого раздела их много) и изучите основы языка.
Python - не PHP в том плане, что он язык общего назначения, а не только для веба.
Berg
regall
Для начала забудьте все, что вы помните о PHP big_smile.
Да …я все это понимаю … Не надо посылать меня на тот или иной источник если не можете дать ответ или Вам лень написать простой код и объяснить …. я много прочитал и читаю на данный момент … Но нигде нет примеров или намеков на подобную реализацию ….
Да … конкретное представление обрабатывает конкретный URL - это все очень удобно и классно, но ни слова нигде нет как можно обрабатываать некоторый код глобально …
Блин - ну задачка же простая до ужаса … определить активный пункт в меню для генерации нужного кода в базовом шаблоне … - не парсить же и-за этого весь запрос и не писать же обработку в каждом представлении ? Тогда теряется весь смысл в этих привязках URL и представлениях … Ну, народ, плиз … - подскажите как реализовать этот подход - неужели это будет много кода и обьяснений ???
regall
Berg
я много прочитал и читаю на данный момент
Berg
Вобщем работаю с питоном 3 дня
Berg
как можно обрабатываать некоторый код глобально …
Не совсем понятно, что вы имеете в виду. URL-диспетчер для того и существует, чтобы указывать, какой view срабатывает на определенный url.
Berg
определить активный пункт в меню для генерации нужного кода в базовом шаблоне
Вы можете это указать в в url'ax, например добавьте в конце в параметры что-то типа:
..., {'selected_menu':'products'}) ...
Таким образом к каждой страничке вы привязываете пункт меню.
Этот параметр во вьюхе через kwargs gолучаете.
Evg
Посмотрите в сторону написания своего тега например:
в шаблоне будет запись вида {%menu%}
далее в контролере тега menu определите по request.url какой текущий пункт, затем все это дело просто в шаблон передайте. Можно каждый пункт оформить ввиде объекта и просто передать в шаблон списком и там:
{%for m in menu%}
<a href=“{{m.get_absolute_url}}” title=“{{m.title}}” class=“sidebar_home” “{%if m.active%}id=sidebar_active_button”{%endif%}></a>
{%endfor%}
Berg
То есть в каждой вьхе я должен описать генерирование меню ?
ну смотрите ….
мне нужно что б при переходе по www.mysite.com был такой код

<ul>
<li><a href=“/” title=“Главная” class=“sidebar_home” id=“sidebar_active_button”></a></li>
<li><a href=“/product/” title=“Продукты” class=“sidebar_products”></a></li>
<li><a href=“/contact/” title=“Контакты” class=“sidebar_contacts”></a></li>
</ul>

а при переходе по www.mysite.com/product/ вот такой

<ul>
<li><a href=“/” title=“Главная” class=“sidebar_home”></a></li>
<li><a href=“/product/” title=“Продукты” class=“sidebar_products” id=“sidebar_active_button”></a></li>
<li><a href=“/contact/” title=“Контакты” class=“sidebar_contacts”></a></li>
</ul>

а при переходе по www.mysite.com/contact/ вот такой

<ul>
<li><a href=“/” title=“Главная” class=“sidebar_home”></a></li>
<li><a href=“/product/” title=“Продукты” class=“sidebar_products”></a></li>
<li><a href=“/contact/” title=“Контакты” class=“sidebar_contacts” id=“sidebar_active_button”></a></li>
</ul>

вот и все ….
как эфективно подобное реализовывается ?
Berg
Evg
Посмотрите в сторону написания своего тега например:
А тег прийдется подключать в каждой вьюхе?
Или он обрабатывается при любом запросе к сайту?
Evg
тег будет прописан один раз в одном базовом шаблоне.
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