DJango在POST中作为上下文参数传递

时间:2011-06-01 14:04:22

标签: django post django-context

在django中创建视图时,是否允许将POST数据作为上下文传递?那就是:

def view( request ):
    #view operations here
    #...

    c = Context({
        'POST':request.POST,
    })
    return render_to_response("/templatePath/", c, context_instance=RequestContext(request))

我的目标是在已填充的字段中维护数据,而无需将其保存到数据库。也就是说,当您单击选项以添加其他字段条目时,您放入的数据将被保留并自动填充到表单中。我觉得这可能是草率的,也可能是不安全的。有什么理由这是一种不好或不安全的技术吗?有没有更好的方法来维护数据?

1 个答案:

答案 0 :(得分:3)

虽然将request.POST变量传递给模板本身并不是什么坏事,但是您尝试实现的所有内容都已经由定型表单视图处理。如果沿着当前的路径走下去,最终会得到一个推荐的方法来处理Django中的表单。

请参阅Django文档中的using a form in a view

def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = ContactForm() # An unbound form
    return render_to_response('contact.html', {
        'form': form,
    })

在这种情况下,您需要确保重定向网址重定向到同一表单。请参阅django.shortcuts.redirect()