javascript - 如何将 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
任何帮助高度赞赏。
解决方案
使用 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)
推荐阅读
- scala - SCALA PAttern 与 LIST 中的递归匹配
- java - 覆盖标准 Spring MVC 异常的处理行为
- php - 将 POST 数据作为 JSON 对象提交与单个字段相比有什么缺点吗?
- javascript - 在 javascript 中以编程方式填写和提交 textarea
- azure - 使用反向代理 localhost 在 Azure Service Fabric 中的 5 节点群集上不起作用
- python-2.7 - 根据三列的值组织行
- android - AndroidJUnitRunner 单元测试执行起来很慢
- ruby-on-rails - 无法在 Rails 5 中的 form_for 中提交表单和添加数据
- vim - E353 寄存器中没有任何内容 *
- excel - VBA Excel在多张纸上填写