2016-04-28 10 views
0

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) 

enter image description here

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

Was ist der Sinn der requestPost-Funktion? Warum greifen Sie nicht direkt auf request.POST zu? –

+0

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

Antwort

1

forms.Textarea ist kein Feld, es ist ein Widget. Ihr Formular enthält keine tatsächlichen Felder. Daher ist cleaned_data leer.

Sie sollten forms.CharField in Ihrem Formular verwenden; Wenn Sie es als TextArea benötigen, können Sie das als Widget-Argument übergeben:

+0

Awesome konvertieren, es hat funktioniert. Bring mich immer raus Daniel hah, danke! – JBT

Verwandte Themen