用户使用 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/')
我需要将用户重定向到一个新页面,该页面显示 "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)