2016-08-10 3 views
0

Ich versuche, ein sehr einfaches Skript in Django zu entwickeln, würde ich eine Json-Daten von der Anfrage sammeln und dann alle Daten in der Datenbank speichern.erhalten Json Daten von Anfrage mit Django

Ich habe ein Python-Skript entwickelt, mit dem ich die Json-Daten an die Django-Ansicht sende, aber ich mache etwas falsch, und ich kann nicht verstehen, was passiert ist, denn jedes Mal, wenn ich es ausführe habe "Malformed data!".

Kann mir jemand helfen? Was mache ich falsch?

Sender.py

import json 
import urllib2 

data = { 
     'ids': ["milan", "rome","florence"] 
} 

req = urllib2.Request('http://127.0.0.1:8000/value/') 
req.add_header('Content-Type', 'application/json') 

response = urllib2.urlopen(req, json.dumps(data)) 

Django view.py

from django.shortcuts import render 

# Create your views here. 
from django.http import HttpResponse 
import json 
from models import * 

from django.http import StreamingHttpResponse 
from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def value(request): 

    try: 
     data = json.loads(request.body) 
     label = data['label'] 
     url = data ['url'] 
     print label, url 
    except: 
     return HttpResponse("Malformed data!") 
    return HttpResponse("Got json data") 
+0

Sie müssen Ihr Wörterbuch korrigieren, da es in der Datei Sender.py keinen Schlüssel 'label' oder 'url' enthält. – Prateek

+0

@Prateek Ich habe den Schlüssel 'IDs' im Python-Skript mit 'Label' geändert und ich habe die Zeile URL = Daten ['URL'] und auch die URL-Variable im Ausdruck entfernt, aber ich habe das gleiche Problem, wenn ich aktualisieren Auf der Browserseite zeigt es mir nur "Malformed Data!" – macco

Antwort

0

Ihr Wörterbuch "data" in sender.py enthält nur einen Wert mit der Taste "ids" aber in view.py Sie sind Versuch, auf die Schlüssel "label" und "url" in diesem geparsten Wörterbuch zuzugreifen.

+0

Ich habe den Schlüssel 'IDs' im Python-Skript mit 'Label' geändert und ich habe die Zeile url = data ['url'] und auch die URL-Variable im Print entfernt, aber ich habe das gleiche Problem, wenn ich den Browser aktualisiere Seite, es zeigt mir nur "Malformed Daten!", der Fehler ist in der Zeile data = json.loads (request.body), mache ich etwas falsch im Absender Skript? – macco

+0

@macco Versuchen Sie zu überprüfen, welche Ausnahmebedingungsnachricht verwendet wird, verwenden Sie Debugging-Tools, um zu verstehen, welcher Anfragetext enthalten ist. – Nerlin