문제

댓글 시스템을 사용하고 있습니다. 이제 세그먼트를 다시 작성하고 URL 주석을 작성하고 기호 #을 추가하고 싶습니다. 페이지 Seccion을 마지막 주석 사용자에게 정확하게 주석 목록으로 이동하고 싶습니다. <a name=#{{comment.id}}?> username </a>

댓글이 게시 될 때 USEN을 리디렉션하기 위해 다음을 사용하고 있습니다.

{% 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는 a ?c=1 URL에 1 주석의 ID입니다. 나는 이것을 대신하기를 원했다 #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