【发布时间】:2017-07-29 22:56:25
【问题描述】:
我正在尝试将成功提交的表单中的数据传递到可以显示此数据的感谢页面。我正在尝试执行反向 HttpResponseRedirect,但我不断收到此错误:
/contactform/process 中的 NoReverseMatch 使用未找到参数“(24,)”的“谢谢”反向。尝试了 1 种模式:[u'contactform/thankyou/$']
这是我目前的代码:
views.py
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.views import generic
from .models import Contact_Object
def index(request):
template_name = 'contactform/index.html'
return render(request, 'contactform/index.html')
def thankyou(request, entered_id):
contact_info = get_object_or_404(Contact_Object, pk=contact_object_id)
template_name = 'contactform/thankyou.html'
return render(request, 'contactform/thankyou.html', {name: contact_info.name})
def process(request):
entered_name = request.POST['fullname']
entered_email = request.POST['email']
entered_message = request.POST['message']
entered = Contact_Object(name=entered_name, email=entered_email, message=entered_message)
entered.save()
entered_id = entered.id
return HttpResponseRedirect(reverse('contactform:thankyou', args=(entered.id,)))
urls.py
from django.conf.urls import url
from . import views
app_name = 'contactform'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^thankyou/$', views.thankyou, name='thankyou'),
url(r'^process$', views.process, name='process'),
]
表单模板
<H1>Contact Form</H1>
<FORM action="{% url 'contactform:process' %}" method="post">
{% csrf_token %}
Full Name:<br>
<input type="text" name="fullname"><br>
Email:<br>
<input type="text" name="email" ><br>
Message:<br>
<textarea name="message" cols="40" rows="5"></textarea>
<input type="submit" value="Enter">
</FORM>
感谢页面模板
<h1>Thank You</h1>
<p>Thank you, {% contact_info.name %}</p>
我是使用 Python/Django 的新手,所以我觉得这可能是一个明显的初学者错误,我似乎无法发现它。
提前致谢。
【问题讨论】:
标签: python html django python-3.x