Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2010 17:49:20

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Доброго времени суток всем!

Вобщем работаю с питоном 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 например ) при загрузке странички по любой ссылке…

Заранее благодарен за ответы :)



Офлайн

#2 Март 10, 2010 17:51:42

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Офлайн

#3 Март 11, 2010 02:57:35

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Готовые решения - это конечно хорошо, но я в них не улавливаю сути до конца так как не знаю еще языка хорошо, вот и пробую изучать на простых примерах … Вы мне мой случай можете помочь понять как реализовать ? Без баз, без админки - все поидее просто должно быть - не могу понять этот момент - как сделать что-то чтоб выполнялось глобально :(



Офлайн

#4 Март 11, 2010 09:58:39

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Berg
Я не совсем понимаю как сделать так чтоб некоторый код программы выполнялся ( и генерировал переменные для шаблонов в папке template - для base.html например ) при загрузке странички по любой ссылке…
Для начала забудьте все, что вы помните о PHP :D.
Django-book на русском. На оф. сайте пройдите Туториал - сразу въедете что, как и почему выполняется.
А лучше всего возьмите для начала книгу по основам Питона (в прикрепленной теме этого раздела их много) и изучите основы языка.
Python - не PHP в том плане, что он язык общего назначения, а не только для веба.



Офлайн

#5 Март 11, 2010 11:12:23

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

regall
Для начала забудьте все, что вы помните о PHP big_smile.
Да …я все это понимаю … Не надо посылать меня на тот или иной источник если не можете дать ответ или Вам лень написать простой код и объяснить …. я много прочитал и читаю на данный момент … Но нигде нет примеров или намеков на подобную реализацию ….
Да … конкретное представление обрабатывает конкретный URL - это все очень удобно и классно, но ни слова нигде нет как можно обрабатываать некоторый код глобально …
Блин - ну задачка же простая до ужаса … определить активный пункт в меню для генерации нужного кода в базовом шаблоне … - не парсить же и-за этого весь запрос и не писать же обработку в каждом представлении ? Тогда теряется весь смысл в этих привязках URL и представлениях … Ну, народ, плиз … - подскажите как реализовать этот подход - неужели это будет много кода и обьяснений ???



Отредактировано (Март 11, 2010 11:16:57)

Офлайн

#6 Март 11, 2010 11:55:16

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Berg
я много прочитал и читаю на данный момент
Berg
Вобщем работаю с питоном 3 дня
Berg
как можно обрабатываать некоторый код глобально …
Не совсем понятно, что вы имеете в виду. URL-диспетчер для того и существует, чтобы указывать, какой view срабатывает на определенный url.
Berg
определить активный пункт в меню для генерации нужного кода в базовом шаблоне
Вы можете это указать в в url'ax, например добавьте в конце в параметры что-то типа:
..., {'selected_menu':'products'}) ...
Таким образом к каждой страничке вы привязываете пункт меню.
Этот параметр во вьюхе через kwargs gолучаете.



Офлайн

#7 Март 11, 2010 12:50:38

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Посмотрите в сторону написания своего тега например:
в шаблоне будет запись вида {%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%}



Отредактировано (Март 11, 2010 12:51:17)

Офлайн

#8 Март 11, 2010 12:54:55

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

То есть в каждой вьхе я должен описать генерирование меню ?
ну смотрите ….
мне нужно что б при переходе по 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>

вот и все ….
как эфективно подобное реализовывается ?



Офлайн

#9 Март 11, 2010 13:00:12

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

Evg
Посмотрите в сторону написания своего тега например:
А тег прийдется подключать в каждой вьюхе?
Или он обрабатывается при любом запросе к сайту?



Офлайн

#10 Март 11, 2010 13:01:20

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Простое меню с помощью Django

тег будет прописан один раз в одном базовом шаблоне.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version