确认表格step2.html Django

时间:2015-10-02 12:14:17

标签: django

在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步提交的字段,如何实现?

3 个答案:

答案 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中的所有数据。