Django - 仅在 HttpResponseRedirect 之后才能访问页面

dev*_*Fun 4 python django redirect

我有一个基于类的视图,在其中处理表单并在成功提交后重定向用户,如下所示:

视图.py

def get(self,request):
    form = self.form_class()
    return render(request, template_name, { 'form' : form })
def post(self, request, *args, **kwargs):
    form = self.form_class(request.POST)
    if form.is_valid():
            ...
        return HttpResponseRedirect(reverse('success'))

return render(request, template_name, { 'form' : form })
Run Code Online (Sandbox Code Playgroud)

urls.py

...
url(r'^submit/success', SubmitView.as_view(), name='success'),
...
Run Code Online (Sandbox Code Playgroud)

可以通过输入 success/submit 直接访问 url。我不在网站上使用任何身份验证,并希望用户只能在重定向后访问提交/成功页面,这样他们就无法直接访问它。我该怎么做?

mik*_*725 5

如果您正在使用session,您可以像这样完成它:

# in the view where form is submitted
if form.is_valid():
    request.session['form-submitted'] = True
    return HttpResponseRedirect(reverse('success'))

# in the success view
def get(self, request):
    if not request.session.get('form-submitted', False):
        # handle case where form was not submitted
    else:
        # render the template
Run Code Online (Sandbox Code Playgroud)