我很难理解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并没有获得内容字典,但我不知道如何确保它的确如此。
答案 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'], {})