【问题标题】:Django form object has no attribute issueDjango 表单对象没有属性问题
【发布时间】:2011-09-11 19:05:25
【问题描述】:

我有一个简单的表单,正在尝试将其发布到一个简单的服务。

表单模型:

class order_form(forms.Form):
    name = forms.CharField(max_length=100)
    phone = forms.CharField(max_length=20)
    email = forms.CharField(max_length=100)
    address = forms.CharField(max_length=200)
    ordered_picture = forms.CharField()

视图(尚未对所有 clear_data 位和内容进行排序):

def place_order(request):
    result = dict()
    if request.method == 'POST':
        try:
            form = order_form(request.POST)
            if not picture.objects.filter(id=form.ordered_picture).exists():
                result['status'] = 'error'
                result['message'] = 'Ordered picture does not exist'
            new_order = order()
            new_order.name = form.data.name
            new_order.phone = form.data.phone
            new_order.email = form.data.email
            new_order.address = form.data.address
            new_order.ordered_picture = int(form.data.ordered_picture)
            new_order.save()
            result['status'] = 'ok'
            result['message'] = new_order.id
        except Exception, e:
            result['status'] = 'error'
            result['message'] = e.message
    else:
        result['status'] = 'error'
        result['message'] = 'Only HTTP POST Method is supported by this service'
    return HttpResponse(content=simplejson.dumps(result))

这是进入的 POST 数据的副本:

csrfmiddlewaretoken:77d1ba277ef43838e670f598c2a128b6
name:qwe
phone:qwe
email:qwe
address:qwe
ordered_picture:1

我得到以下信息:

{"status": "error", "message": "'order_form' object has no attribute 'ordered_picture'"}

在尝试 form = order_form(request.POST) 之后,这个“对象没有属性”的东西正在异常中弹出。我快要崩溃了 - 为什么这告诉我表单实际上没有这个属性?

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    是时候整理出所有“cleaned_data bits”,因为that's how you access the field values

            if not picture.objects.filter(id=form.cleaned_data['ordered_picture']).exists():
    

    【讨论】:

    • 他需要先打电话给form.is_valid(),因为在你打电话之前cleaned_data不存在。
    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 2017-10-27
    • 2022-11-03
    • 1970-01-01
    • 2018-10-28
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多