【问题标题】:Error: 'unicode' object has no attribute 'get'错误:“unicode”对象没有属性“get”
【发布时间】:2013-01-18 05:02:45
【问题描述】:

我遇到了一个错误,我快疯了!

我创建了一个与模型关联的表单。每次在我的views.py上执行form.is_valid()函数时,django都会显示以下错误:

Exception Type: AttributeError

Exception Value: 'unicode' object has no attribute 'get'

models.py

from django.db import models

class Register(models.Model):
    email = models.CharField(max_lenght=100)

forms.py

from django.form import ModelForm
from models.models import Register

class RegisterForm(ModelForm):
    class Meta:
        model = Register

views.py

from django.shortcuts import render_to_response
from models.models import Register
from register.forms import RegisterForm

def register(request):
    if 'user_email' in request.POST:
        form = RegisterForm(request.POST['user_email'])
        if form.is_valid():
            form.save()
            retunr render_to_response('registered.html')

    return render_To_response('main.html') 

PS_1:我在另一个页面中显示表单的值,以检查它是否只包含电子邮件,没关系,它只包含电子邮件。

PS_2:request.POST 肯定包含“user_email”。

拜托,你能帮我解决一下吗?

提前致谢。

【问题讨论】:

    标签: django-forms


    【解决方案1】:

    这一行:

    form = RegisterForm(request.POST['user_email'])
    

    不正确。 Forms 应该传递完整的映射。

    form = RegisterForm(request.POST)
    

    然后字段名称会有所不同,但这是一个单独的问题(因为您似乎没有在页面中输出表单)。

    【讨论】:

    • 问题是如果我删除['user_email'],那么,当django检查form.is_valid()时,总是返回false
    • 我的问题得到了答案!问题是我将电子邮件 ID 标识为“user_email”而不是“电子邮件”。验证表单时,表单字段的名称应与 request.POST 中来自 html 模板的字段名称完全相同。感谢大家的帮助!
    猜你喜欢
    • 2015-10-27
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多