【发布时间】:2020-07-27 12:38:42
【问题描述】:
如果我在表单提交页面中添加重定向 url,页面正在重定向,但表单数据没有保存到数据库。如果我删除重定向 url,表单数据将被保存,但我的重定向不起作用。我需要重定向到包含活动详细信息以及感谢信息的页面。
请告诉我哪里出错了..
#forms.py
class UserForm(forms.ModelForm):
class Meta:
model = webinar_user
fields = ['first_name', 'last_name', 'email_id', 'contact_no', 'city',
'state','postal_code','country','company']
#views.py
def post_detail(request, slug):
template_name = "site/new_form.html"
event = get_object_or_404(webinar_event, slug=slug)
# event = get_object_or_404(webinar_event, pk=post_id)
# success_url = "events:thankyou"
user_data= None
if request.method == "POST":
user_form = UserForm(data=request.POST)
print("form")
if user_form.is_valid():
print("form valid")
user_data= user_form.save(commit=False)
user_data.event= event
req= user_data.save()
subject = 'Thank You for registering for the webinar'
context={'first_name':user_data.first_name, 'title':event.title,
'description':event.about_event, 'event_date':event.event_date,
'event_time':event.event_time, 'event_duration':event.event_duration}
message = get_template('site/emails/thank_you.html').render(context)
email_from = settings.EMAIL_HOST_USER
email_id = user_form.cleaned_data['email_id']
recipient_list = [email_id, ]
email = EmailMessage(subject, message, email_from, recipient_list)
email.content_subtype = 'html'
email.send()
return HttpResponseRedirect('events:thank_you', kwargs={'id':req.id})
)
else:
user_form = UserForm()
return render(
request,
template_name,
{
"event": event,
"user_data":user_data,
"user_form": user_form
},
)
def thank_you(request, id):
event = webinar_event.objects.get(pk=id)
return render(request, 'site/thankyou.html',
{'event' : event})
html代码
<div class="testbox">
{% if event.event_image %}
<img src={{event.event_image.url}}>
{% endif %}
<form action="{% url 'events:thank_you' event.id%}" method= "post">
{% csrf_token %}
<div class="banner">
<h1>{{event.title}}</h1>
<br>
<hr>
<h2>{{event.event_date}}</h2>
<!-- <img src={{event.image.url}}>-->
</div>
【问题讨论】: