あなたはポスト/リダイレクト/ゲット・デザインパターン(PRG)を使用することができるかもしれません。 Post/Redirect/Getの一般的な情報については、以下を参照してください。http://en.wikipedia.org/wiki/Post/Redirect/Getそこには素晴らしいプロセスフロー図がいくつかあります。
次のようになります。PRGを実装するビューの一般的な例:あなたがGETともっと面白い何かをする必要がある場合は、reverse
は引数とkwargsからを取ることができ
# urls.py
urlpatterns = patterns('',
url(r'^/$', views.my_view, name='named_url'),
)
# forms.py
class MyForm(forms.Form):
pass # the form
# views.py
def my_view(request, template_name='template.html'):
""" Example PostRedirectGet
This example uses a request context, but isn't
necessary for the PRG
"""
if request.POST:
form = MyForm(request.POST)
if form.is_valid():
try:
form.save()
# on success, the request is redirected as a GET
return HttpResponseRedirect(reverse('named_url'))
except:
pass # handling can go here
else:
form = MyForm()
return render_to_response(template_name, {
'form':form
}, context_instance=RequestContext(request))
。表示するparams、url_pattern、およびreverse callを操作して、表示したい結果を表示します。
もう1つ注意する点は、(この例のように)同じビューにリダイレクトする必要がないことです。これは、ユーザーをリダイレクトする名前の付いたビューです。
ありがとうございました。あなたは「いつもではない」と言いますが、それはなぜですか? – xpanta
リファラーを送信するのはユーザーのブラウザです。一部のブラウザにはOperaを使用しない、またはOperaを使用しないようにするオプションがあります。もう一つの修正は、フォームに隠れた入力として現在のパスを含め、 'request.POST'でその値を調べることです。 – AdamKG