Комментарий Django, добавить символ к комментарию URL?

StackOverflow https://stackoverflow.com/questions/1456902

Вопрос

Я использую систему комментариев, теперь я хотел бы переписать сегмент из комментария 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top