Aug 11, 2010 00:51
Сказать по правде, кроме электронного блога у меня есть еще и обычный, бумажный дневник. Я туда пишу вообще все что приходит в голову - и там много всякой ерунды, а кроме того эмоций, которые точно никому показывать не следует. Но так лучше думается - а кроме того, когда что-то удается, оттуда можно просто брать кусок текста и публиковать. Так я сейчас и сделаю...
Задача: предоставить возможность авторизованному пользователю удалять по своему усмотрению свои собственные комментарии (на какой-то определенной странице проекта, где отображаются эти комментарии).
Как это сделать? Можно реализовать следующую простую схему:
Шаг 1. Рядом с комментарием (имеется в виду только те комментарии, автором которых является данный авторизованный пользователь) располагаем надпись "Удалить" следующего вида:
href = "/my/url/(id_комментария)" onclick="return confirm('Вы уверены, что хотите удалить этот комментарий?')">Удалить
Благодаря атрибуту onclick, прежде чем сработает ссылка, браузер вернет написанный на javascript запрос на подтверждение намерения пользователя удалить данный комментарий. Если пользователь нажимает "Ok", то переходим к следующему шагу.
Шаг 2. По ссылке /my/url/(id_комментария) в проекте происходит вызов представления comment_delete:
urlpatterns = patterns('',
...
(r'my/url/(\d+)/', comment_delete),
...
)
Шаг 3. Представление comment_delete производит сверку автора запроса и автора комментария, и если оказывается, что это одно и то же лицо, то комментарий помечается как удаленный и сохраняется. Далее запрос переправляется на исходную страницу:
def comment_delete(request, offset):
comment = Comment.objects.get(id=offset)
if comment.user == request.user:
comment.is_removed = True
comment.save()
return HttpResponseRedirect(request.META['HTTP_REFERER'])
Вот и все собственно. Просто и красиво. А то ведь чуть было не перемудрил :)
django,
программирование,
хитрости