Django HttpResponseRedirect

发布于 2021-01-29 16:01:36

我已经创建了一个基本的联系表单,当用户提交信息时,它应该重定向到“谢谢”页面。

views.py

def contact(request):
    # if no errors...
    return HttpResponseRedirect('/thanks/')

urls.py

(r'^contact/$', contact),
(r'^contact/thanks/$', contact_thanks),

两个页面都在硬编码的URL上工作。但是,当我在其上提交表单时/contact/,重定向到/contact(不存在斜杠),这是一个不存在的页面(404或错误页面告诉我我需要一个斜杠)。

它无法正确重定向的原因是什么,我该如何解决?

更新:return HttpResponseRedirect('/contact/thanks/')就是我现在拥有的,但是问题是提交按钮(使用POST)没有重定向到URL-
根本没有重定向。

关注者
0
被浏览
45
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    重定向的不是POST按钮,而是视图。

    如果没有另外指定,则表单(HTML表单标签)将发布到相同的URL。如果表单在/ contact /上,则在/ contact
    /上过帐(带有或不带有斜杠,相同)。

    认为您应该重定向到“谢谢”。从文档中:

    def contact(request):
        if request.method == 'POST': # If the form has been submitted...
            form = ContactForm(request.POST) # A form bound to the POST data
            if form.is_valid(): # All validation rules pass
                # Process the data in form.cleaned_data
                # ...
                return HttpResponseRedirect('/thanks/') # Redirect after POST
        else:
            form = ContactForm() # An unbound form
    
        return render_to_response('contact.html', {
            'form': form,
        })
    

    更改/thanks//contact/thanks/,您就完成了。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看