Dajaxice 表单验证:“unicode 对象没有属性获取”(jquery 序列化)

Posted

技术标签:

【中文标题】Dajaxice 表单验证:“unicode 对象没有属性获取”(jquery 序列化)【英文标题】:Dajaxice form validation: "unicode object has no attribute get" (jquery serialize) 【发布时间】:2011-12-02 02:32:38 【问题描述】:

我对 dajax 和 jquery 有一个大问题:我正在尝试使用 dajax 保存用户的电子邮件,但是当调用 form.is_valid() 时我不断收到此错误

 "unicode" object has no attribute "get"

我认为这是因为我在这个函数中使用了 jquery 的 serialize() 方法:

function send_form()
    data = $('#subscribe').serialize(true);
    data = decodeURIComponent(data);    
    Dajaxice.tothego_frontend.sito_maynard.subscribe(Dajax.process,'form':data);

subscribe是我的验证+注册方式,里面也包含is_valid()

据我了解,发生错误是因为我试图在字符串上调用 is_valid,但我看不到其他方式来序列化我的表单。此外,在dajaxice example page 上,验证工作正常。我的代码几乎相同,只是在 is_valid() 调用之后我执行了不同的操作。

拜托,我真的需要一些帮助,从昨天开始一直在尝试一切 谢谢!

编辑:here's the stacktrace

这是表单代码:

class SubscriptionForm(forms.Form):

     email = forms.EmailField()
     what_sub = forms.CharField()
     where_sub = forms.CharField()
     url_sub = forms.CharField()

正如我在开头所说的那样,与 dajaxice 的示例相同

【问题讨论】:

您的表单中出现错误,因此请发布。回溯:它的存在是有原因的,以帮助诊断问题。发布它。 你去。将表单绑定到 request.POST 不会引发异常,但值是空的(我仍然想了解为什么我无法使其工作) 【参考方案1】:

我通过改变来修复它

$('#subscribe').serialize(true)

进入

$('#subscribe').serializeObject(true)

我坚持认为,问题在于序列化创建的结构,这对 django 表单验证不利

【讨论】:

我对答案投了赞成票,但也想添加注释。您需要一个 jQuery 插件才能使 serializeObject 工作。我以为它在 jQuery 中,但很快发现它不是。 (尽管它在最初的帖子中已链接,但我认为将其作为答案的一部分很重要)。我用danheberden.com/jquery-plugin-serializeobject-2011-04-01

以上是关于Dajaxice 表单验证:“unicode 对象没有属性获取”(jquery 序列化)的主要内容,如果未能解决你的问题,请参考以下文章

dajaxice:将参数传递给 python 函数

如何取消使用 Dajaxice 进行的 Ajax 调用?

为啥 Dajaxice 和 Dajax 使用 MEDIAL_URL?

WTForms 以 unicode 格式从表单中引入数据

Dajaxice 0.5.1 - 似乎无法使教程工作

在生产服务器上找不到 Dajaxice