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
1. werehuman 05.06.2011 14:25 Psi+

ты не перепутал? Тег <li> может закрывается до начала блока?

2. werehuman → werehuman /1 05.06.2011 14:25 Psi+

я бы покарал тебя за такой код

3. Kona-chan → werehuman /1 05.06.2011 14:25 Altair

Ну у меня работает так, как я написал. Не знаю, насколько это правильно.

4. Kona-chan → werehuman /2 05.06.2011 14:26 Altair

Знаю, знаю, быдлокод 99%. В оправдание могу сказать, что с джангой работаю второй день.

5. werehuman → Kona-chan /3 05.06.2011 14:26 Psi+

не надо рвать теги на куски, это выносит мозг и текстовому редактору, и тебе

6. Kona-chan → werehuman /5 05.06.2011 14:26 Altair

Посоветуй лучше, что делать. Все-таки удариться в теги?

7. werehuman 05.06.2011 14:29 Psi+

<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>

8. utros 05.06.2011 14:30 Adium

Костыли. Я ебашил мидлтварь для такого. А потом забил.

9. Kona-chan → werehuman /7 05.06.2011 14:30 Altair

А как определяется if selected?

10. utros 05.06.2011 14:31 Adium

А, ручками собранная навигация.. Тогда просто передавай в шаблон название текущей страницы и проверяй.

11. werehuman 05.06.2011 14:32 Psi+

> Находил совет написать свой тег, но что-то не очень хорошо понял, как с этими тегами работать.
https://docs.djangoproject.com/en/1.3/ho...

12. Kona-chan → werehuman /11 05.06.2011 14:32 Altair

Это я читал -_-

13. werehuman → Kona-chan /9 05.06.2011 14:32 Psi+

а это ты во вьюхе должен передать шаблонизатору

14. werehuman → Kona-chan /12 05.06.2011 14:32 Psi+

и не понял?

15. Kona-chan → werehuman /13 05.06.2011 14:32 Altair

._.
Лётчик.жпг

16. Kona-chan → werehuman /14 05.06.2011 14:33 Altair

В общих чертах понял.

17. werehuman → Kona-chan /15 05.06.2011 14:34 Psi+

https://docs.djangoproject.com/en/1.3/to... http/shortcuts/#render-to-response

18. Kona-chan → werehuman /17 05.06.2011 14:37 Altair

Все равно не понял.

19. werehuman → Kona-chan /18 05.06.2011 14:39 Psi+

ну ты из вьюхи в шаблонизатор передаёшь какие-то данные. Вот и передавай selected.

20. werehuman → Kona-chan /18 05.06.2011 14:39 Psi+

ты с самим принципом MVC знаком?

21. SirAnthony 05.06.2011 14:39

>{% 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>

22. Kona-chan → werehuman /20 05.06.2011 14:39 Altair

Слабо.

23. SirAnthony → SirAnthony /21 05.06.2011 14:40

Ох, тут еще два класса, и готовый сайт, сейчас наваляю

24. werehuman → SirAnthony /21 05.06.2011 14:40 Psi+

а контекст проебал, да?

25. Kona-chan → SirAnthony /21 05.06.2011 14:41 Altair

А Categories как заполнять? Алсо, у меня еще Flatpages, что с ними делать?

26. werehuman → Kona-chan /25 05.06.2011 14:41 Psi+

Flatpages нахуй не нужен

27. SirAnthony → Kona-chan /25 05.06.2011 14:41 Home

Я сейчас это в редакторе сделаю, в пстоформе неудобно.

28. Kona-chan → werehuman /26 05.06.2011 14:41 Altair

._. А как тогда делать статические страницы?

29. SirAnthony → werehuman /24 05.06.2011 14:41 Home

Где?

30. werehuman → SirAnthony /29 05.06.2011 14:42 Psi+

во вьюхе

31. werehuman → werehuman /30 05.06.2011 14:42 Psi+

впрочем, он там и не нужен

32. SirAnthony → Kona-chan /28 05.06.2011 14:42 Home

в урлах сразу шаблон тыкать

33. SirAnthony → werehuman /30 05.06.2011 14:42 Home

@render_to('template.html')

34. werehuman → SirAnthony /33 05.06.2011 14:42 Psi+

контекста нету

35. Kona-chan → SirAnthony /32 05.06.2011 14:43 Altair

My brain hurts TT_TT

36. SirAnthony → SirAnthony /33 05.06.2011 14:43 Home

Мне просто лениво писать много строчек, все поняли

37. werehuman → Kona-chan /35 05.06.2011 14:43 Psi+

после пхп ой как непривычно

38. SirAnthony → Kona-chan /35 05.06.2011 14:43 Home

(r'^faq/$', direct_to_template, {'template': 'anime/faq.html'}), вот так я делаю

39. Kona-chan → werehuman /37 05.06.2011 14:43 Altair

Я вообще кроме паскаля ничего не знаю. С пехопе никогда не работал, ровно как и с джангопитоном.

40. Kona-chan → SirAnthony /38 05.06.2011 14:44 Altair

А faq.html в блокноте набивал?

41. werehuman → Kona-chan /39 05.06.2011 14:44 Psi+

лучше выучи джангу, да. Я похапе намного позже джанги осилил, не жалею

42. werehuman → Kona-chan /40 05.06.2011 14:44 Psi+

ты говоришь это так, будто это что-то плохое

43. Kona-chan → Kona-chan /40 05.06.2011 14:44 Altair

Ну в смысле, в редакторе? Не через веб-морду?

44. Kona-chan → werehuman /42 05.06.2011 14:44 Altair

Это было не в укор, я интересуюсь.

45. Kona-chan → werehuman /41 05.06.2011 14:45 Altair

Пытаюсь. Пока туговато идет.

46. werehuman → Kona-chan /44 05.06.2011 14:45 Psi+

именно так

47. SirAnthony → Kona-chan /43 05.06.2011 14:45 Home

Да, оно статичное же.

48. Kona-chan → werehuman /46 05.06.2011 14:45 Altair

Okay.jpg, пойду выкину flatpages.

49. Kona-chan → Kona-chan /48 05.06.2011 14:46 Altair

И все же, чем они плохи?

50. werehuman → Kona-chan /49 05.06.2011 14:47 Psi+

по сути ничем. Просто страничка либо хранится в бд, либо в файловой системе.

51. Kona-chan → werehuman /50 05.06.2011 14:47 Altair

Тогда что плохого, если она будет храниться в бд?

52. werehuman → Kona-chan /51 05.06.2011 14:47 Psi+

тебе плохо то, что этот flatpages ещё осилить надо

53. Kona-chan → werehuman /52 05.06.2011 14:48 Altair

._.

54. SirAnthony 05.06.2011 14:52 Home

Дай свой шаблон

55. Kona-chan → SirAnthony /54 05.06.2011 14:52 Altair

Ща, секунду, я, кажется, понял, что имел в виду @werehuman.

56. werehuman → Kona-chan /55 05.06.2011 14:52 Psi+

я сам ещё себя не понял

57. Kona-chan → werehuman /56 05.06.2011 14:57 Altair

Заебись, работает. Дай я тебя обниму ^_^

58. SirAnthony → Kona-chan /57 05.06.2011 15:00 Home

Ты мне шаблон дай, я тебе сайт написал

59. werehuman → SirAnthony /58 05.06.2011 15:01 Psi+

ты знаешь, что ему нужно?

60. Kona-chan → SirAnthony /58 05.06.2011 15:01 Altair

Мне не нужен был сайт, мне был нужен совет :3

61. SirAnthony → werehuman /59 05.06.2011 15:01 Home

Догадываюсь, оно же одинаковое все.

63. 238328 05.06.2011 15:04

ПОЕЛ

64. Kona-chan 05.06.2011 15:55 Altair

Ололо, быдлокод:

<li {% if selected == "nav-index" %}id="selected"{% endif %}>{% if selected != "nav-index" %}<a href="/">Головна</a>{% else %}Головна{% endif %}</li>

65. SirAnthony 05.06.2011 15:59 home

http://rghost.ru/9499541 Теги через зад, конечно, выводятся, будет миллион запросов, но для примера хватит.

66. Kona-chan → SirAnthony /65 05.06.2011 15:59 Altair

Спасибо, няша.

67. SirAnthony → SirAnthony /65 05.06.2011 16:00 home

'django_extensions' можешь выкинуть совсем, annoying сделай как в джангобуке.

68. werehuman → Kona-chan /64 05.06.2011 16:01

на самом деле это норм в джанге

69. Kona-chan → werehuman /68 05.06.2011 16:02 Altair

OH

70. SirAnthony → werehuman /68 05.06.2011 19:27 Home

Ты просто познал похапе-сторону джанги. У нее есть и другая сторона.

71. werehuman → SirAnthony /70 06.06.2011 04:26

А как бы ты это решил? (словами опиши)

72. SirAnthony → werehuman /71 06.06.2011 04:59 Home

Я выше привел свое решение

Do you really want to delete ?