Найти - Пользователи
Полная версия: contrib.comments: вывод комментариев
Начало » Django » contrib.comments: вывод комментариев
1 2
Cover Story
Всем доброго!
Использую 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 %}
slav0nic
ну и создай templates/comments/posted.html где будет редирект куда надо после 2 секунд
или вообще переопредели вьюху для comments/posted/
Cover Story
slav0nic, Спасибо за наводку, исправил!
Но остаются еще два вопроса решение которых вызывает трудность
Как разбить комментарии по страницам (например: по 5 комментариев на странице).
Как вывести список комментариев в обратном порядке, отсортировав их по дате.
Вообще это возможно?
tmt
Для разбиения комментариев по страницам можете использовать - 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

Можна свой кастомный тег написать если есть время и желание… =)
slav0nic
Cover Story
я их давно не юзал, если comment_list - queryset, то .reverse добавь
Cover Story
slav0nic: Я сделал так: {% for comment in comment_list|dictsortreversed:“id” %}
Осталось разобраться с pagination
tmt
slav0nic
Cover Story
я их давно не юзал, если comment_list - queryset, то .reverse добавь
Нехочу детально этот вопрос рассматривать, но думаю в даной ситуации не подойдет. Порядок следования будет зависеть от алгоритма выбора движком БД набора записей. И не факт что он будет идти в том порядке, в котором происходила втавка. Тоесть нет 100% гарантии что даже номера праймэри-ключей будут идти по порядку возрастания или убывания (после реверса). Следовательно даже если принять что возрастание номера первичного ключа == возрастанию даты камента, результат при определенных условиях и факторах не будет полностью приемлимым. Хотя этого будет “почти” не видно… =)
tmt
Cover Story
slav0nic: Я сделал так: {% for comment in comment_list|dictsortreversed:“id” %}
Осталось разобраться с pagination
В даном случае вы на 100% должны быть уверены что в выборке возрастание номера первичного ключа == возрастанию даты камента , и дата никогда не меняеться. =)
Думаю вам лучше вместо айди использовать submit_date.
P.S. А с pagination там ничего сложного… =)
Cover Story
tmt Спасибо за submit_date, не подумал.
C pagination тоже вроде получилось. Только вот еще одна проблемка возникла. Как вместо: “previous”, “next” поставить слова “предыдущий”, “следующий”
tmt
Если память мне не изменяет и у тебя не мультиязычное приложение - просто попрявь шаблонный файл pagination.html
Если я ошибся, просто пересмотри исходники пагинатиона на предмент слов некст и превиоус… =)
Если мультиязычное - поищи локализированый русский PO файл прямо у них на сайте, хотя там локализации то, слова два… =)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB