Как вернуть XML в ajax в Django? - PullRequest
       10

Как вернуть XML в ajax в Django?

0 голосов
/ 26 декабря 2018

Я хочу вернуть XML-данные клиенту, которые можно отобразить в виде графика в mxGraph.

Моя главная цель - сохранить mxGraph на сервере, поэтому всякий раз, когда пользователь обращается к одной и той же странице, отображаемый график представляет собой тот же график, на котором он оставлен пользователем.Данные XML сохраняются на сервере, но не возвращаются клиенту в виде XML.

В настоящее время я пытался вернуть его в формате JSON, думая, что можно использовать значение в качестве XML.Однако, с ним возвращается «/ n», поэтому он не анализируется должным образом.

views.py

def saveData(request, user):
if request.method == "POST":
#Get user profile
    member = Member.objects.get(username=user)
#Get XML data once user presses save
#xmlData = request.POST['xml']
    member.data = request.POST['xml']
    member.save()
    print(member.data)
    response = JsonResponse([
        member.data
    ], safe = False);
    #return render(request, 'fastcookapp/index.html', {"xmlData": member.data})
    return HttpResponse(response, content_type="application/json")


return HttpResponse('POST is not used')

ajax

var button = mxUtils.button('Save', function()
            {

                var encoder = new mxCodec();
                var node = encoder.encode(graph.getModel());
                var xml = mxUtils.getPrettyXml(node); 
                var csrftoken = getCookie('csrftoken');

                $.ajax({

                    type: "POST",
                    url: "/saveData/",
                    data: { "xml": xml},
                    headers:{
                        "X-CSRFToken": csrftoken
                    },
                    success: function(data){
                        console.log("data" + data[0])

                        //functions in mxgraph to decode the xml back to a graph
                        var xmlDoc = mxUtils.parseXml(data[0]);
                        var node = xmlDoc.documentElement;
                        //console.log("node " + node)
                        var dec = new mxCodec(node.ownerDocument);
                        //console.log("dec " + dec)
                        //console.log("graph model " + graph.getModel())
                        dec.decode(node, graph.getModel());

                    }
                });

                //console.log(xml);
                //mxUtils.popup(mxUtils.getPrettyXml(node), true);
            });

models.py

class Member(User):
data = models.TextField(null=True)

def __str__(self):
    return self.username
...