如何从django框架中的表单字段获取价值?

时间:2011-01-16 15:40:58

标签: python django

如何从django框架中的表单字段中获取值?我想在视图中执行此操作,而不是在模板中执行此操作...

6 个答案:

答案 0 :(得分:105)

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
            # ...

            print form.cleaned_data['my_form_field_name']

            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = ContactForm() # An unbound form

    return render_to_response('contact.html', {
        'form': form,
    })

答案 1 :(得分:39)

选择:

def my_view(request):

    if request.method == 'POST':
        print request.POST.get('my_field')

        form = MyForm(request.POST)

        print form['my_field'].value()
        print form.data['my_field']

        if form.is_valid():

            print form.cleaned_data['my_field']
            print form.instance.my_field

            form.save()
            print form.instance.id  # now this one can access id/pk

注意:该字段一旦可用就会被访问。

答案 2 :(得分:25)

验证数据后即可执行此操作。

if myform.is_valid():
  data = myform.cleaned_data
  field = data['field']

另外,阅读django文档。它们很完美。

答案 3 :(得分:5)

我使用django 1.7+和python 2.7+,上面的解决方案无效。 表格中的输入值可以使用POST如下(使用上面相同的表格):

if form.is_valid():
  data = request.POST.get('my_form_field_name')
  print data

希望这有帮助。

答案 4 :(得分:2)

要从发送过帐请求的表单中检索数据,您可以这样做

def login_view(request):
    if(request.POST):
        login_data = request.POST.dict()
        username = login_data.get("username")
        password = login_data.get("password")
        user_type = login_data.get("user_type")
        print(user_type, username, password)
        return HttpResponse("This is a post request")
    else:
        return render(request, "base.html")

答案 5 :(得分:1)

如果您使用的是django 3.1及更高版本,这很容易

def login_view(request):
    if(request.POST):
        yourForm= YourForm(request.POST)
        itemValue = yourForm['your_filed_name'].value()
        # Check if you get the value
        return HttpResponse(itemValue )
    else:
        return render(request, "base.html")