Я просто наткнулся на это маленькое уродство. После прочтения исходного кода я не увидел никакого хорошего способа переопределить это поведение. По умолчанию вы перенаправлены на URL-адрес в переменной {{ next }}
шаблона, и Django добавляет ?c=1
к URL-адресу, где 1
- это идентификатор комментария. Вместо этого я хотел, чтобы это было #c1
, чтобы пользователь переходил по странице к комментарию, который он только что опубликовал. Я сделал это с небольшим количеством «исправлений обезьян» следующим образом:
from django.contrib.comments.views import utils
from django.core import urlresolvers
from django.http import HttpResponseRedirect
def next_redirect(data, default, default_view, **get_kwargs):
next = data.get("next", default)
if next is None:
next = urlresolvers.reverse(default_view)
if get_kwargs:
next += '#c%d' % (get_kwargs['c'],)
return HttpResponseRedirect(next)
# Monkey patch
utils.next_redirect = next_redirect