用户使用 Django 提交表单后,如何重定向到“感谢您联系我们”页面?

How can I redirect to a Thank you for contacting us page after user submits a form with Django?

我需要将用户重定向到一个新页面,该页面显示 "Thank you for contacting us" 在使用 Django 提交表单后。

我已经尝试使用 HttpResponseRedirect,反向,但我不知道如何将它实现到我项目的所有必要文件。

from django.shortcuts import render
from .forms import ContactForm
# Create your views here.
def contact(request):
    template = "contact.html"

    if request.method == "POST":
        form = ContactForm(request.POST)

        if form.is_valid():
            form.save()

    else:
        form = ContactForm()

    context = {
        "form": form,
    }
    return render(request, template, context)

当我点击提交时,它会将数据发送到 Django 数据库,因此表单可以正常工作,但用户不知道这一点,因为在他们点击提交后,它不会重定向到感谢页面。

要重定向到感谢页面,您可以使用这种方式

from django.shortcuts import render
from .forms import ContactForm
from django.core.urlresolvers import reverse
from django.http.response import HttpResponseRedirect

def contact(request):
   template = "contact.html"

   if request.method == "POST":
      form = ContactForm(request.POST)

      if form.is_valid():
         form.save()
         return HttpResponseRedirect(reverse("thanks_view_name"))

   else:
      form = ContactForm()

   context = {
      "form": form,
   }
   return render(request, template, context)

参见示例 https://docs.djangoproject.com/en/2.1/topics/forms/#the-view

只需使用新模板构建另一个与现有视图类似的视图,并将其连接到新的 url。然后将用户重定向到 url。像这样:

在你的 urls.py:

from django.conf.urls import url
from .views import thank_you
urlpatterns = [
    url(r'^thanks/$', thank_you, name='thank-you'),
]

在你的 views.py:

from django.shortcuts import render

def thank_you(request):
    template = 'thank_you.html'
    context = {}
    return render(request, template, context)

在您的联系人视图中只有 return 一个 redirect('/thanks/')