Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将Django中的表单数据直接用作另一个视图中的上下文_Python_Django_Forms - Fatal编程技术网

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

Python 如何将Django中的表单数据直接用作另一个视图中的上下文,python,django,forms,Python,Django,Forms,我很难理解django的整个表单业务。据我所知,清理后的表单数据是一个字典。因此,我定义的所有表单字段都应该像这样出现在字典中:{'definedform':userinput,…}。这是正确的吗? 我想创建一个表单,用户可以在其中输入数据。然后,应将该数据发送到另一个视图,在该视图中,使用latex模板呈现输入的数据(随后呈现为pdf)。如果我在/create_pdf/view中定义上下文并手动获取用户输入,这或多或少会很好。但我想还有更好的办法。我认为应该起作用的是: def index(r

我很难理解django的整个表单业务。据我所知,清理后的表单数据是一个字典。因此,我定义的所有表单字段都应该像这样出现在字典中:{'definedform':userinput,…}。这是正确的吗? 我想创建一个表单,用户可以在其中输入数据。然后,应将该数据发送到另一个视图,在该视图中,使用latex模板呈现输入的数据(随后呈现为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}) 
在my/create_pdf/视图中:

def create_pdf(request):
    template = get_template('app/latextemplate.tex')
    rendered_tpl = template.render(content)
    [...]
那么,如何确保将数据从索引视图传递到创建pdf视图

编辑:


忘记提及:错误是“'content'未定义”。所以我知道/create\u pdf/view没有内容字典,但我不知道如何确保它有内容字典。

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

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


不幸的是,数据似乎是空的。至少我被重定向到我的/create\u pdf/view,但渲染的pdf是空的。我试图在我的索引视图中找到一些错误,有趣的是,如果我在“if request==POST”或“if form.valid”之后添加一个print语句,它就不会被打印出来。。。因此,似乎还有其他问题。为什么POST请求没有被正确识别?它没有工作,因为我的html模板中的表单操作被设置为“/create_pdf/”。。。我现在把它设置为“.”,它就成功了。一般来说,Django官方教程对此有点模糊。请删除perso键上的
]
'perso']
'perso']
,方法是
'perso'
def create_pdf(request):
        data = request.session.pop('perso'], {})