如何将Django中的表单数据直接用作另一个视图中的上下文

时间:2016-01-31 12:02:30

标签: python django forms

我很难理解django中的整个表单业务。据我所知,清理后的表格数据是字典。因此,我所定义的所有表单字段都应该在字典中,如下所示:{' definedform':userinput,...}。它是否正确? 我想创建一个用户可以输入数据的表单。然后应该将该数据发送到不同的视图,其中输入的数据用乳胶模板渲染(并随后渲染成pdf)。如果我在/ create_pdf / view中定义上下文并手动获取用户输入,这或多或少都可以正常工作。但我想有一个更好的方法。我认为应该有效:

def index(request):
    if request.method == "POST":
        persoform = PersonalForm(request.POST, prefix='personal')
        if persoform.is_valid():
            content = persoform.cleaned_data()
            content = Context(content)
            return HttpResponseRedirect('/create_pdf/')
    else:
        persoform = PersonalForm()
    return render(request, 'app/template.html', {'persoform': persoform}) 

在我的/ create_pdf / view中:

def create_pdf(request):
    template = get_template('app/latextemplate.tex')
    rendered_tpl = template.render(content)
    [...]

那么,我怎样才能确保将数据从索引视图传递到create_pdf视图?

编辑:

忘记提及:错误是"'内容'未定义"。所以我理解/ create_pdf / view并没有获得内容字典,但我不知道如何确保它的确如此。

1 个答案:

答案 0 :(得分:0)

将数据放入提交的会话中,然后在第二个视图中弹出。

if form.is_valid():
    request.session['perso'] = form.cleaned_data
    return HttpResponseRedirect('/create_pdf/')

...

def create_pdf(request):
        data = request.session.pop('perso'], {})