首页 > 解决方案 > 如何将 Javascript 变量保存到 Django 媒体文件夹中的文件中?

问题描述

我有一个画布,我在其中绘制一个矩形并保存它们的坐标。坐标保存在 Javascript 字典中。

使用以下脚本,我可以保存/下载包含字典的文件。但它仅保存在“下载”文件夹中。

function myFunction() {
    var hiddenElement = document.createElement('a');

    hiddenElement.href = 'data:attachment/text,' + encodeURI(JSON.stringify(dict));
    hiddenElement.target = '_blank';
    hiddenElement.download = 'dict.json';
    hiddenElement.click();
}

我想将它保存在每个用户的 Django 媒体文件夹中。

媒体 > {{user}} > dict.json

任何帮助高度赞赏。

标签: javascriptdjango

解决方案


使用 Ajax 解决了它。

阿贾克斯脚本:

$(document).ready(function() {
    $("#mybutton").click(function() {
        $.ajax({
            url: "{% url 'drawing' user %}",
            type: "POST",
            dataType: "json",
            data: {
                url: JSON.stringify(dict), // coordinates are saved on dict
                csrfmiddlewaretoken: '{{ csrf_token }}'
                },
            success : function(json) {
                alert("Drawing saved!");
            },
            error : function(xhr, errmsg, err) {
                alert("Drawing could not be saved!");
            }
        });
    });
});

视图.py:

def drawing(request):
    user = request.user

    url = request.POST.get('url') # url from ajax will be saved here.
    first_value = next(iter(((request.POST).dict()).values())) # cleaning output
    
    with open("media/{}/dict.json".format(user), 'w') as draw:
        draw.write(first_value) # save to file

    return JsonResponse(url, safe=False)

推荐阅读