表单绑定,但在cleaning_data中没有任何内容

时间:2016-04-28 20:09:50

标签: ajax django forms post

我觉得这可能是我想要的一些简单的东西,但是由于后期数据来自我的角度javascript中的AJAX调用,我不能太确定。简而言之,我从request.body中的AJAX调用中获取数据,我有一个处理它的函数并将其转换为查询字典以绑定到我的表单。它一直在努力到此为止。该表单根据form.is_valid有效,我可以看到数据正在发布,但它的clean_data属性中没有任何内容。

def requestPost(request):
    querystring = urllib.urlencode(ast.literal_eval(request.body))
    postdata = QueryDict(query_string=querystring)

    return postdata

def send(request, thread_id):
    # """Send a message to the thread."""

    account = Account.objects.get(email=request.user.username)
    thread = Thread.objects.get(id=thread_id)

    if request.method == "POST":
        x = requestPost(request)
        form = NewChat(requestPost(request))

        if form.is_valid():
            cleaned_data = form.cleaned_data
            threadchat = ThreadChat.objects.create(text=cleaned_data['message'], account=account, thread=thread)

            broadcast(threadchat.id)

            context = {"threadchat": threadchat}
            return composeJsonResponse(200, "", context)

enter image description here

class NewChat(forms.Form):
    message = forms.Textarea()

1 个答案:

答案 0 :(得分:1)

forms.Textarea不是字段,而是小部件。您的表单中没有实际字段,因此cleaned_data为空。

您应该在表单中使用forms.CharField;如果你需要它显示为textarea你可以传递它作为widget参数:

class NewChat(forms.Form):
    message = forms.CharField(widget=forms.Textarea())