34

私はDjangoを使ってツールを使っていますが、テンプレートシステムを使用して前のページへの「戻る」リンクを作成する簡単な方法があるかどうか疑問に思っています。

最悪の場合、view関数のrequestオブジェクトからこの情報を取得し、それをテンプレートレンダリングメソッドに渡すことができると思いますが、このボイラープレートコードをなんとかして回避できることを望んでいます。

Djangoテンプレートのドキュメントを確認しましたが、これについて明示的に言及しているものは見当たりません。

4

9 に答える 9

47

実際にはそれgo(-1)です。

<input type=button value="Previous Page" onClick="javascript:history.go(-1);">
于 2009-03-20T14:33:04.077 に答える
43

この解決策は私にとってうまくいきました:

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

しかし、それは以前にプロジェクトの設定に追加'django.core.context_processors.request',されています。TEMPLATE_CONTEXT_PROCESSORS

于 2014-11-11T14:49:38.997 に答える
13

有効にできます:

'django.core.context_processors.request',

あなたのsettings.TEMPLATE_CONTEXT_PROCESSORSブロックでリファラーをフックアウトしますが、それは少し厄介で、至る所で壊れる可能性があります。

これが必要なほとんどの場所(たとえば、SOの投稿ページの編集)には、実際のオブジェクト(この例では投稿)をフックして、適切な前のページがどうあるべきかを簡単に理解できるようにします。

于 2009-02-08T02:08:27.087 に答える
3

非常にシンプルなクライアント側オプションをいつでも使用できます。

<a href="javascript:history.go(1)">Back</a>
于 2009-03-18T10:50:13.340 に答える
0

クライアント側のソリューションを使用することが適切なソリューションです。

<a href="javascript:history.go(-1)" class="btn btn-default">Cancel</a>
于 2016-09-28T11:26:03.533 に答える
0

Django管理者の変更フォームの「戻る」ボタンの場合、テンプレートの「preserved_filters」変数を解析およびデコードするためのカスタムテンプレートフィルターです。カスタマイズした templates/admin/submit_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)
于 2016-08-11T11:27:15.767 に答える