Django:如何保存mxGraph,以便当用户刷新图形时停留? (异步)

时间:2018-12-25 16:10:41

标签: javascript java python django mxgraph

我将用户创建的当前mxGraph转换为XML,并将其存储在数据库(ajax.js)中。我将其作为JSONResponse的形式返回给我的ajax请求(views.py)。

正如我在Django管理页面中检查的那样,保存在数据库中的数据会保存,并且每个保存按钮都会更新xml。

这一切都很好,但是问题是当我刷新页面时,创建的图形不会停留在页面上。

ajax.js

var button = mxUtils.button('Save', function()
            {
                //var url = "{%url'login'%}"
                //var url = "{% url 'myapp:productdetail' %}";
                //location.href = '/saveData/'
                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])
                        //console.log(graph)
                        //var xmlDoc = data[0]

                        var xmlDoc = mxUtils.parseXml(data[0]);
                        //var xmlDoc = mxUtils.load("/saveData/").getXml();
                        //console.log("xmlDoc " + xmlDoc)
                        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());

                    }
                });

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')

models.py

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

def __str__(self):
    return self.username

PS我不知道为什么我的JS没有变色,我添加了javascript标签,但它不起作用...提前对不起

1 个答案:

答案 0 :(得分:0)

我不得不创建一个Ajax GET请求并如上所述对mxGraph进行解码。