如何在 Django 中隐藏成功页面



我想知道是否有人知道:

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

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

但是,当我输入网址 mysite.com/thankyou/时,出现了"谢谢"页面......但是我只需要它在提交表单时才显示,并在用户尝试直接打开表单时隐藏它。

请帮忙。提前感谢!

您可以在重定向之前在表单处理视图中的会话中放置某些内容,并在感谢 URL 中检查它:如果不存在,则返回 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,以确保无论如何都会从会话中删除密钥。

最新更新