我觉得这可能是我想要的一些简单的东西,但是由于后期数据来自我的角度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)
class NewChat(forms.Form):
message = forms.Textarea()
答案 0 :(得分:1)
forms.Textarea
不是字段,而是小部件。您的表单中没有实际字段,因此cleaned_data
为空。
您应该在表单中使用forms.CharField
;如果你需要它显示为textarea你可以传递它作为widget参数:
class NewChat(forms.Form):
message = forms.CharField(widget=forms.Textarea())