Комментарий Django, добавить символ к комментарию URL?
-
12-09-2019 - |
Вопрос
Я использую систему комментариев, теперь я хотел бы переписать сегмент из комментария URL и добавить символ #, я хочу переместить раздел страницы в список комментариев точно к последнему пользователю комментария с помощью <a name=#{{comment.id}}?> username </a>
Я использую next для перенаправления пользователя при публикации комментария:
{% get_comment_form for object as form %}
<form action="{% comment_form_target %}" method="POST">
{{ form }}
<input type="hidden" name="next" value="{{ object.get_absolute_url }}" />
<input type="submit" name="preview" class="submit-post" value="Preview"></td>
</form>
Но в Django Doc ничего не сказано о перезаписи или настройке перенаправления / URL-адреса комментария.
Есть идеи?
Спасибо
Решение
Я только что наткнулся на это маленькое уродство.Прочитав исходный код, я не увидел хорошего способа переопределить это поведение.По умолчанию вы будете перенаправлены на 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