Форум сайта python.su
0
Хотим мы, допустим, вывести список комментариев для модерации и чтобы была там ссылка “удалить” и “одобрить”. Предположим, ссылки получаем функциями get_delete_url и get_approve_url.
def comments_moderation(request): comments = CommentWithTitle.objects.filter(is_public=False) for comment in comments: del_url = get_delete_url(comment) print del_url return render_to_response('newcomments.html', {'comments': comments}, context_instance=RequestContext(request))
Офлайн
9
Я думаю лучше сделать функции get_*_url методами модели
Офлайн
568
Правильнее IMHO заюзать CBV и написать миксин ModeratorMixin, помещая который в перечень классов-родителей будем получать определенный функционал.
Офлайн
0
svasНе совсем понимаю, что делать с тем, что вернёт метод.
Я думаю лучше сделать функции get_*_url методами модели
FishHookПопробую так.
Правильнее IMHO заюзать CBV и написать миксин ModeratorMixin, помещая который в перечень классов-родителей будем получать определенный функционал.
Офлайн
0
Написал пока так:
view.py
def delete_comment(request, comment_id): comment = CommentWithTitle.objects.get(id = comment_id) return HttpResponseRedirect(get_delete_url(comment))
url(r'delete_comment/(?P<comment_id>\d+)/$', delete_comment, name='delete_comment'),
<a href={% url delete_comment comment.pk %}>Удалить комментарий</a>
Офлайн
35
Вот получили мы не опубликованные комментарии:
comments = CommentWithTitle.objects.filter(is_public=False)
@models.permalink def get_delete_url(self): return ('delete_comment', (), { 'comment_id': self.pk, })
{% for comment in comments %}
{{comment }}
<a href="{{ comment.get_delete_url }}">Удалить комментарий</a>
{% endfor %}
Отредактировано inoks (Фев. 5, 2013 11:59:41)
Офлайн
0
inoks, спасибо, вариант хороший.
В итоге получается, что по ссылке с адресом
{{ comment.get_delete_url }}
return urlresolvers.reverse("django.contrib.comments.views.moderation.delete", args=(comment.id,))
@models.permalink def delete_comment_url(self): return 'comments-delete', (), {'comment_id': self.pk}
{{ comment.delete_comment_url }}
При этом если имя шаблона сменить на ‘delete_comment’, то всё работает. Что не так может быть?
Офлайн
568
ИМХО удалять информацию по ГЕТу это очень плохая практика.
Офлайн
0
FishHookНасколько помню, это представление запрашивает подтверждение удаления, которое отправляется уже кнопкой, ПОСТом.
ИМХО удалять информацию по ГЕТу это очень плохая практика.
Офлайн
2
SВ 1.5 сам инстанс вьюхи попадает в контекст
Как правильнее получить их в шаблоне?
Офлайн