문제

나는 함께 툴링하고있다 장고 또한 템플릿 시스템을 사용하여 이전 페이지에 "백"링크를 작성하는 간단한 방법이 있는지 궁금합니다.

최악의 경우 뷰 함수의 요청 객체 에서이 정보를 가져 와서 템플릿 렌더링 메소드로 전달할 수 있다고 생각하지만,이 보일러 플레이트 코드를 어떻게 든 피할 수 있기를 바랍니다.

나는 django 템플릿 문서를 확인했는데 이것을 명시 적으로 언급 한 것을 보지 못했습니다.

도움이 되었습니까?

해결책

글쎄, 당신은 활성화 할 수 있습니다 :

'django.core.context_processors.request',

당신의 settings.TEMPLATE_CONTEXT_PROCESSORS 참조자를 차단하고 연결하지만 약간 구역질이되어 모든 곳에서 부러 질 수 있습니다.

이것을 원하는 대부분의 장소 (예 : SO의 편집 게시 페이지)는 (예 : 게시물에서) 훅을 갈 수있는 실제 객체가 있으므로 적절한 이전 페이지가 무엇인지 쉽게 해결할 수 있습니다.

다른 팁

사실입니다 go(-1).

<input type=button value="Previous Page" onClick="javascript:history.go(-1);">

이 솔루션은 저를 위해 해결되었습니다.

<a href="{{request.META.HTTP_REFERER}}">Go back</a>

그러나 그것은 이전에 추가되었습니다 'django.core.context_processors.request', 에게 TEMPLATE_CONTEXT_PROCESSORS 프로젝트 설정에서.

<a href="{{request.META.HTTP_REFERER|escape}}">Back</a>

|escape ""Stringage에서 나가기 위해

Django Admin에 대한 변경 양식의 '백'버튼의 경우, 내가 수행하는 것은 템플릿에서 'Preserved_Filters'변수를 구문 분석하고 해독하기위한 사용자 정의 템플릿 필터입니다. 다음을 사용자 정의 템플릿/admin/upply_line.html 파일에 배치했습니다.

<a href="../{% if original}../{% endif %}?{{ preserved_filters | decode_filter }}">
    {% trans "Back" %}
</a>

그런 다음 사용자 정의 템플릿 필터를 만들었습니다.

from urllib.parse import unquote
from django import template

def decode_filter(variable):
    if variable.startswith('_changelist_filters='):
        return unquote(variable[20:])
    return variable

register = template.Library()
register.filter('decode_filter', decode_filter)

항상 매우 간단한 클라이언트 측 옵션을 사용할 수 있습니다.

<a href="javascript:history.go(1)">Back</a>

클라이언트 측 솔루션을 사용하는 것이 적절한 솔루션입니다.

<a href="javascript:history.go(-1)" class="btn btn-default">Cancel</a>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top