Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2010 08:09:46

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

contrib.comments: вывод комментариев

Всем доброго!
Использую Django 1.2.1. Для создания гостевой книги решил использовать django.contrib.comments, в связи с этим возникло несколько вопросов:
Как разбить комментарии по страницам (например: по 5 комментариев на странице).
Как вывести список комментариев в обратном порядке, отсортировав их по дате.
После ввода комментария появляется страничка с надписью “Спасибо за Ваш комментарий” и после этого ничего не происходит, а хотелось бы django возвращалась на страничку гостевой книги.
На всякий случай привожу пример своего шаблона

{% extends "g.html" %}
{% load comments %}
<link href="/media/style.css" rel="stylesheet" type="text/css" />
{% block form %}
{% get_comment_form for current_site as form %}
{% render_comment_form for current_site %}
{% endblock %}
{% block comments %}
<div class="comments-list">
{% get_comment_list for current_site as comment_list%}
{% for comment in comment_list %}
<table>
<tr><td width=757px><div id=news><b><a href="mailto:{{ comment.user_email }}">{{ comment.user_name}}<a/></b>, {{ comment.submit_date }}</div></td></tr>
<tr><td>{{comment.comment}}</td></tr>
</table>
{% endfor %}
</div>
{% endblock %}
{% extends "comments/bas.html" %}
{% block title %}Гостевая книга{% endblock %}

{% block content %}
<h1>Гостевая книга</h1>
<div id="form">
{% block form %}{% endblock %}
</div>
<hr>
<div id="content">
{% block comments %}{% endblock %}
</div>

{% endblock %}



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Авг. 3, 2010 14:34:35

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

contrib.comments: вывод комментариев

ну и создай templates/comments/posted.html где будет редирект куда надо после 2 секунд
или вообще переопредели вьюху для comments/posted/

Офлайн

#3 Авг. 4, 2010 09:50:58

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

contrib.comments: вывод комментариев

slav0nic, Спасибо за наводку, исправил!
Но остаются еще два вопроса решение которых вызывает трудность
Как разбить комментарии по страницам (например: по 5 комментариев на странице).
Как вывести список комментариев в обратном порядке, отсортировав их по дате.
Вообще это возможно?



Python 2.7.3
Pyside 1.1.2

Офлайн

#4 Авг. 4, 2010 11:12:46

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

contrib.comments: вывод комментариев

Для разбиения комментариев по страницам можете использовать - http://code.google.com/p/django-pagination/

Для вывода их в обратном порядке, отсортированными по дате попробуйте применить http://docs.djangoproject.com/en/dev/ref/templates/builtins/#dictsortreversed

Ну и для возвращения на страницу - http://docs.djangoproject.com/en/dev/ref/contrib/comments/#redirecting-after-the-comment-post

Можна свой кастомный тег написать если есть время и желание… =)



Офлайн

#5 Авг. 4, 2010 14:38:47

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

contrib.comments: вывод комментариев

Cover Story
я их давно не юзал, если comment_list - queryset, то .reverse добавь

Офлайн

#6 Авг. 4, 2010 15:47:52

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

contrib.comments: вывод комментариев

slav0nic: Я сделал так: {% for comment in comment_list|dictsortreversed:“id” %}
Осталось разобраться с pagination



Python 2.7.3
Pyside 1.1.2

Офлайн

#7 Авг. 4, 2010 15:50:49

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

contrib.comments: вывод комментариев

slav0nic
Cover Story
я их давно не юзал, если comment_list - queryset, то .reverse добавь
Нехочу детально этот вопрос рассматривать, но думаю в даной ситуации не подойдет. Порядок следования будет зависеть от алгоритма выбора движком БД набора записей. И не факт что он будет идти в том порядке, в котором происходила втавка. Тоесть нет 100% гарантии что даже номера праймэри-ключей будут идти по порядку возрастания или убывания (после реверса). Следовательно даже если принять что возрастание номера первичного ключа == возрастанию даты камента, результат при определенных условиях и факторах не будет полностью приемлимым. Хотя этого будет “почти” не видно… =)



Офлайн

#8 Авг. 4, 2010 16:04:53

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

contrib.comments: вывод комментариев

Cover Story
slav0nic: Я сделал так: {% for comment in comment_list|dictsortreversed:“id” %}
Осталось разобраться с pagination
В даном случае вы на 100% должны быть уверены что в выборке возрастание номера первичного ключа == возрастанию даты камента , и дата никогда не меняеться. =)
Думаю вам лучше вместо айди использовать submit_date.
P.S. А с pagination там ничего сложного… =)



Офлайн

#9 Авг. 5, 2010 07:26:10

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

contrib.comments: вывод комментариев

tmt Спасибо за submit_date, не подумал.
C pagination тоже вроде получилось. Только вот еще одна проблемка возникла. Как вместо: “previous”, “next” поставить слова “предыдущий”, “следующий”



Python 2.7.3
Pyside 1.1.2

Офлайн

#10 Авг. 5, 2010 10:55:20

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

contrib.comments: вывод комментариев

Если память мне не изменяет и у тебя не мультиязычное приложение - просто попрявь шаблонный файл pagination.html
Если я ошибся, просто пересмотри исходники пагинатиона на предмент слов некст и превиоус… =)
Если мультиязычное - поищи локализированый русский PO файл прямо у них на сайте, хотя там локализации то, слова два… =)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version