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

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

3. Kona-chanwerehuman /1 05.06.2011 14:25 Altair

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

4. Kona-chanwerehuman /2 05.06.2011 14:26 Altair

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

5. werehumanKona-chan /3 05.06.2011 14:26 Psi+

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

6. Kona-chanwerehuman /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-chanwerehuman /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-chanwerehuman /11 05.06.2011 14:32 Altair

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

13. werehumanKona-chan /9 05.06.2011 14:32 Psi+

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

14. werehumanKona-chan /12 05.06.2011 14:32 Psi+

и не понял?

15. Kona-chanwerehuman /13 05.06.2011 14:32 Altair

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

16. Kona-chanwerehuman /14 05.06.2011 14:33 Altair

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

17. werehumanKona-chan /15 05.06.2011 14:34 Psi+

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

18. Kona-chanwerehuman /17 05.06.2011 14:37 Altair

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

19. werehumanKona-chan /18 05.06.2011 14:39 Psi+

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

20. werehumanKona-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-chanwerehuman /20 05.06.2011 14:39 Altair

Слабо.

23. SirAnthonySirAnthony /21 05.06.2011 14:40

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

24. werehumanSirAnthony /21 05.06.2011 14:40 Psi+

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

25. Kona-chanSirAnthony /21 05.06.2011 14:41 Altair

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

26. werehumanKona-chan /25 05.06.2011 14:41 Psi+

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

27. SirAnthonyKona-chan /25 05.06.2011 14:41 Home

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

28. Kona-chanwerehuman /26 05.06.2011 14:41 Altair

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

29. SirAnthonywerehuman /24 05.06.2011 14:41 Home

Где?

30. werehumanSirAnthony /29 05.06.2011 14:42 Psi+

во вьюхе

31. werehumanwerehuman /30 05.06.2011 14:42 Psi+

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

32. SirAnthonyKona-chan /28 05.06.2011 14:42 Home

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

33. SirAnthonywerehuman /30 05.06.2011 14:42 Home

@render_to('template.html')

34. werehumanSirAnthony /33 05.06.2011 14:42 Psi+

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

35. Kona-chanSirAnthony /32 05.06.2011 14:43 Altair

My brain hurts TT_TT

36. SirAnthonySirAnthony /33 05.06.2011 14:43 Home

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

37. werehumanKona-chan /35 05.06.2011 14:43 Psi+

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

38. SirAnthonyKona-chan /35 05.06.2011 14:43 Home

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

39. Kona-chanwerehuman /37 05.06.2011 14:43 Altair

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

40. Kona-chanSirAnthony /38 05.06.2011 14:44 Altair

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

41. werehumanKona-chan /39 05.06.2011 14:44 Psi+

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

42. werehumanKona-chan /40 05.06.2011 14:44 Psi+

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

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

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

44. Kona-chanwerehuman /42 05.06.2011 14:44 Altair

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

45. Kona-chanwerehuman /41 05.06.2011 14:45 Altair

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

46. werehumanKona-chan /44 05.06.2011 14:45 Psi+

именно так

47. SirAnthonyKona-chan /43 05.06.2011 14:45 Home

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

48. Kona-chanwerehuman /46 05.06.2011 14:45 Altair

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

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

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

50. werehumanKona-chan /49 05.06.2011 14:47 Psi+

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

51. Kona-chanwerehuman /50 05.06.2011 14:47 Altair

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

52. werehumanKona-chan /51 05.06.2011 14:47 Psi+

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

53. Kona-chanwerehuman /52 05.06.2011 14:48 Altair

._.

54. SirAnthony 05.06.2011 14:52 Home

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

55. Kona-chanSirAnthony /54 05.06.2011 14:52 Altair

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

56. werehumanKona-chan /55 05.06.2011 14:52 Psi+

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

57. Kona-chanwerehuman /56 05.06.2011 14:57 Altair

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

58. SirAnthonyKona-chan /57 05.06.2011 15:00 Home

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

59. werehumanSirAnthony /58 05.06.2011 15:01 Psi+

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

60. Kona-chanSirAnthony /58 05.06.2011 15:01 Altair

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

61. SirAnthonywerehuman /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-chanSirAnthony /65 05.06.2011 15:59 Altair

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

67. SirAnthonySirAnthony /65 05.06.2011 16:00 home

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

68. werehumanKona-chan /64 05.06.2011 16:01

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

69. Kona-chanwerehuman /68 05.06.2011 16:02 Altair

OH

70. SirAnthonywerehuman /68 05.06.2011 19:27 Home

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

71. werehumanSirAnthony /70 06.06.2011 04:26

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

72. SirAnthonywerehuman /71 06.06.2011 04:59 Home

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

Do you really want to delete ?