ページxにはボタンがあり、ページzにはリダイレクトされるページyがあります。 ページのzには、記入が必要な書式があります。保存すると、私はページxまたはyにリダイレクトしたいと思います。Django前のページへのリダイレクト
通常、ビューで「リダイレクト」を使用し、リダイレクト先のページを指定します。しかし、このような場合はどうしますか?
アイデア?
ありがとうございます!
ページxにはボタンがあり、ページzにはリダイレクトされるページyがあります。 ページのzには、記入が必要な書式があります。保存すると、私はページxまたはyにリダイレクトしたいと思います。Django前のページへのリダイレクト
通常、ビューで「リダイレクト」を使用し、リダイレクト先のページを指定します。しかし、このような場合はどうしますか?
アイデア?
ありがとうございます!
GETパラメータを使用して、到着したページをページzから追跡できます。だからあなたがページzに正常に到着したとき、我々はどのページから来たのかを覚えている。ページz上のフォームを処理する際には、以前に保存した情報を使用してリダイレクトします。だから、:
ボタン/ページyの上のリンクは、その値が現在のURLでパラメータ含まれている必要があります
<a href="/page_z/?from={{ request.path|urlencode }}" />go to form</a>
が続いpage_zのビューでは、テンプレート上にこれを渡すことができます。
def page_z_view(self, request):
...
return render_to_response('mytemplate.html', { 'from' : request.GET.get('from', None) })
をあなたのフォームテンプレートには:
<form action="{% if from %}?next={{ from }}{% endif %}" />
...
これでフォームはnext
フォームが正常に送信された後にどこに戻るかを示すパラメータ。私たちは、これを実行するためにビューをrevistする必要があります。したがって
>>> print(previous_page)
'http://www.myserver.com/myApp/z'
:それはのようなものが含まれます
previous_page = request.META['HTTP_REFERER']
:
def page_z_view(self, request):
...
if request.method == 'POST':
# Do all the form stuff
next = request.GET.get('next', None)
if next:
return redirect(next)
return render_to_response('mytemplate.html', { 'from' : request.GET.get('from', None)}
ユーザーが訪問したページに関する情報を保存します。後で検索することができます。おそらくこれを行うための最良の場所は、セッション中です。
Djangoの要求は、どのようなユーザーがどこから来たページがあることを知っていますあなたはどこから来たのかを知っています(警告、安全でないデータとして扱い、徹底的に検証する、悪意のあるデータを含むことさえあるかもしれません)。あなたはそれがページz.html
return render(request, 'myApp/z.html', data)
とページzのテンプレートでレンダリング
data = {
...,
# also indicate, that saved data are valid and user can leave
'previous_page': previous_page,
}
としてテンプレートに渡し
まず、あなたはにメタリフレッシュタグを追加します。
{% if form_is_saved and previous_page %}<meta http-equiv="refresh" content="0; url={{ previous_page }}" />{% endif %}
をこれは利点があり、そのフォームは、それが満たされているページz.html、によって保存されます:それは、フォームを保存し、ページがロードされると、ユーザーは自動的にリダイレクトリダイレクトされることを引き起こしますページxとyでそれを処理する必要はありません(xとyページがDjangoアプリケーションの外にある場合はこれを行う唯一の方法です)。 の :
ので、ページのyの私のボタンは次のようなものでなければなりませんか?何らかの理由でそれが動作していません。 1つは、私のフォームはもはや "次の"私のフォームの下で有効な..保存されませんそして、私は元のウェルカムページにリダイレクトされている..それは間違ったページです。 – JohnnyCash
私は答えを更新しました - 私は余分な/を '
を提出していただきありがとうございます:)あなたの