如何在Django中隐藏成功页面

时间:2012-11-19 10:23:22

标签: python html django redirect

我想知道是否有人知道:

例如,我有一个用户填写的表单,当他提交时,页面将重定向到“谢谢”页面。一切正常。在urls.py中,我有一行指出页面存在:

url(r'^thankyou/$', 'render_form'),

但是,当我输入url mysite.com/thankyou/时,会出现“谢谢”页面......但是我需要它才会在我提交表单时出现并在用户尝试直接打开时隐藏它

请帮忙。提前谢谢!

1 个答案:

答案 0 :(得分:3)

您可以在重定向之前在表单处理视图中的会话中放置一些内容,并在感谢网址中检查它:如果它不存在,则返回403错误。类似的东西:

def form_handling_view(request):
    if request.POST:
    form = MyForm(request.POST)
        if form.is_valid():
            ... handle the form ...
            request.session['form_posted'] = True
            return redirect('thank_you')

def thank_you(request):
    if not request.session.pop('form_posted', False):
        return HttpResponseForbidden('not permitted')
    ... render thank_you page ...

注意我在thank_you中使用pop以确保无论如何都从会话中删除密钥。