Kona-chan
05.06.2011 14:24 Altair
А вот как в джанге сделать менюшку для сайта, например? Я делал так. В главном шаблоне пишу что-то вроде:
<ul>
<li {% block nav-home %}><a href="/">Глагне</a>{% endblock %}</li>
<li {% block nav-articles %}><a href="/articles/">Статьи</a>{% endblock %}</li>
</ul>
Потом в шаблонах для страниц (например, article.html) пишу:
{% extends "base.html" %}
{% block nav-articles %}id="selected">Статьи{% endblock %}
Таким образом, у меня получается один и только один <li> с id=selected, для которого в css прописано правило выделения, а заодно выкинут <a>. Однако меня совсем не прельщает перспектива написания отдельного шаблона для каждой страницы сайта.
Находил совет написать свой тег, но что-то не очень хорошо понял, как с этими тегами работать.
Recommended by:
@Minoru
ты не перепутал? Тег <li> может закрывается до начала блока?
я бы покарал тебя за такой код
Ну у меня работает так, как я написал. Не знаю, насколько это правильно.
Знаю, знаю, быдлокод 99%. В оправдание могу сказать, что с джангой работаю второй день.
не надо рвать теги на куски, это выносит мозг и текстовому редактору, и тебе
Посоветуй лучше, что делать. Все-таки удариться в теги?
<ul>
<li {% if selected == "nav-home" %}selected="selected"{% endif %}><a href="/">Глагне</a></li>
<li {% if selected == "nav-articles" %}selected="selected"{% endif %}><a href="/articles/">Статьи</a></li>
</ul>
Костыли. Я ебашил мидлтварь для такого. А потом забил.
А как определяется if selected?
А, ручками собранная навигация.. Тогда просто передавай в шаблон название текущей страницы и проверяй.
> Находил совет написать свой тег, но что-то не очень хорошо понял, как с этими тегами работать.
https://docs.djangoproject.com/en/1.3/ho...
Это я читал -_-
а это ты во вьюхе должен передать шаблонизатору
и не понял?
._.
Лётчик.жпг
В общих чертах понял.
https://docs.djangoproject.com/en/1.3/to... http/shortcuts/#render-to-response
Все равно не понял.
ну ты из вьюхи в шаблонизатор передаёшь какие-то данные. Вот и передавай selected.
ты с самим принципом MVC знаком?
>{% block nav-home %}><a href="/">Глагне</a>{% endblock %}
>{% block nav-home %}>
А потом будешь удивляться, почему все внезапно обращается в пиздец.
Делать лучше так:
Модели:
class Categories(models.Model):
category = fields.CharField(unique=True, db_index=True)
category_name = fields.CharField()
category_ololo = fields.BooleanField() #ну ты понел
class Article(models.Model):
title = fields.CharField(max_length=200)
text = fields.CharField(max_length=20000)
category = fields.ForeignKey(Categories)
autor = fields.ForeignKey(User)
tags = models.ManyToManyField(Tags)
@render_to('template.html')
def index(request):
menu = Categories.objects.values('category', 'category_name').all()
return {menu: menu}
В шаблоне:
<ul>
{% for menuitem in menu %}
<li id="{{ menuitem.category }}"><a href="{{ menuitem.category }}">{{ menuitem.category_name }}</a></li>
{% endfor %}
</ul>
Слабо.
Ох, тут еще два класса, и готовый сайт, сейчас наваляю
а контекст проебал, да?
А Categories как заполнять? Алсо, у меня еще Flatpages, что с ними делать?
Flatpages нахуй не нужен
Я сейчас это в редакторе сделаю, в пстоформе неудобно.
._. А как тогда делать статические страницы?
Где?
во вьюхе
впрочем, он там и не нужен
в урлах сразу шаблон тыкать
@render_to('template.html')
контекста нету
My brain hurts TT_TT
Мне просто лениво писать много строчек, все поняли
после пхп ой как непривычно
(r'^faq/$', direct_to_template, {'template': 'anime/faq.html'}), вот так я делаю
Я вообще кроме паскаля ничего не знаю. С пехопе никогда не работал, ровно как и с джангопитоном.
А faq.html в блокноте набивал?
лучше выучи джангу, да. Я похапе намного позже джанги осилил, не жалею
ты говоришь это так, будто это что-то плохое
Ну в смысле, в редакторе? Не через веб-морду?
Это было не в укор, я интересуюсь.
Пытаюсь. Пока туговато идет.
именно так
Да, оно статичное же.
Okay.jpg, пойду выкину flatpages.
И все же, чем они плохи?
по сути ничем. Просто страничка либо хранится в бд, либо в файловой системе.
Тогда что плохого, если она будет храниться в бд?
тебе плохо то, что этот flatpages ещё осилить надо
._.
Дай свой шаблон
Ща, секунду, я, кажется, понял, что имел в виду @werehuman.
я сам ещё себя не понял
Заебись, работает. Дай я тебя обниму ^_^
Ты мне шаблон дай, я тебе сайт написал
ты знаешь, что ему нужно?
Мне не нужен был сайт, мне был нужен совет :3
Догадываюсь, оно же одинаковое все.
http://rghost.ru/9490971
ПОЕЛ
Ололо, быдлокод:
<li {% if selected == "nav-index" %}id="selected"{% endif %}>{% if selected != "nav-index" %}<a href="/">Головна</a>{% else %}Головна{% endif %}</li>
http://rghost.ru/9499541 Теги через зад, конечно, выводятся, будет миллион запросов, но для примера хватит.
Спасибо, няша.
'django_extensions' можешь выкинуть совсем, annoying сделай как в джангобуке.
на самом деле это норм в джанге
OH
Ты просто познал похапе-сторону джанги. У нее есть и другая сторона.
А как бы ты это решил? (словами опиши)
Я выше привел свое решение