Ich fühle mich wie das kann etwas einfaches sein, dass ich vermisse, aber da die Post-Daten von einem AJAX-Aufruf in meinem eckigen Javascript kommt konnte ich nicht sicher sein. Kurz gesagt, ich bekomme Daten von einem AJAX-Aufruf in request.body, die ich habe, um sie zu verarbeiten und in ein Query-Dictionary umzuwandeln, das an mein Formular bindet. Es hat bis zu diesem Punkt funktioniert. Das Formular ist gemäß form.is_valid gültig, und ich kann sehen, dass die Daten gepostet werden, aber es hat nichts in seinem Attribut cleaned_data.Formular gebunden, aber hat nichts in cleaned_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()
Was ist der Sinn der requestPost-Funktion? Warum greifen Sie nicht direkt auf request.POST zu? –
Da die Post-Daten von eckigen als AJAX-Aufruf kommen, werden die Daten im Body-Attribut der Anfrage als Zeichenfolge durchlaufen. Also musste ich mit der Zeichenfolge umgehen und es in ein QueryDict – JBT