在Django的step2.html上显示确认的最佳方法是什么?
forms.py
from django import forms
class ContactForm(forms.Form):
name = forms.CharField()
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea())
views.py
from django.views.generic import FormView
from .forms import ContactForm
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.http import HttpResponseRedirect
def step1(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
#save and cleared_form
return HttpResponseRedirect('/step2/')
else:
form = ContactForm()
return render(request, 'step1.html', {'form': form})
def step2(request):
ctx = { 'Test_1': 'email@email.com'}
return render(request, 'step2.html', ctx)
step2.html
{{Test_1}}
在第2步,我想显示在第1步提交的字段,如何实现?
答案 0 :(得分:0)
好的解决方案是在提交有效表单时在step2.html
视图中显示step1
,而不是将用户重定向到第2步。这样,您就可以在视图和模板中访问表单数据。
提交确认时,步骤1中的值可以通过隐藏字段传递或保存到会话存储中。
示例:
def step1(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
ctx = {'contact_data': form.cleaned_data}
return render(request, 'step2.html', ctx)
else:
form = ContactForm()
return render(request, 'step1.html', {'form': form})
答案 1 :(得分:0)
您可以在步骤1中重定向之前将整个表单数据(cleaning_data)保存到会话存储中。这样您就可以在步骤2中检索该数据。示例:
<input type="image" id="pluto" src="pluto.jpg" alt="pluto" width="150px" height="150px" style="margin-left: 45%;"/>
<iframe id='something' data-altsrc="http://agar.io/" name="main" src="http://www.w3schools.com" style="border:none;width:100%;height:100%;margin-top:150px;"></iframe>
<script>
$("#pluto").click(function() {
{
var iframe = $("#something");
var altsrc = iframe.data("altsrc");
iframe.data("altsrc", iframe.attr("src"));
iframe.attr("src", altsrc);
})
</script>
答案 2 :(得分:0)
考虑使用Form wizard。它将处理您在步骤之间传递提交的数据(使用cookie或会话)。您需要做的就是:创建2个视图,一个使用正确的表单,一个只有一些确认按钮,在模板中为步骤2检索步骤1中的所有数据。