당신은 포스트/리디렉션/가져 오기 디자인 패턴 (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을 조작하여보고자하는 결과를 표시하십시오.
추가로 한 가지주의 할 점은 동일한보기로 리디렉션 할 필요가 없다는 것입니다 (이 예와 같이). 사용자를 리디렉션하려는 모든 명명 된보기가 될 수 있습니다.
대단히 감사합니다. 당신은 "항상 그렇지는 않다"고 말하는 이유는 무엇입니까? – xpanta
리퍼러를 보내는 것은 사용자의 브라우저에 달려 있습니다. 일부 브라우저는 Opera를 사용하지 못하도록 설정하거나 옵션을 사용할 수 없습니다. 또 다른 해결 방법은 양식에 숨겨진 입력 값으로 현재 경로를 포함시키고'request.POST'에서 그 값을 검색하는 것입니다. – AdamKG