django render 返回数据及使用问题
后台用render返回一个{‘structures’,[{'value','2'},{'title','办公室'},....]}格式,前台接收,浏览器会报错“Uncaught SyntaxError: Unexpected token :”,大概是在context转换时html标签转义问题。代码如下:
return render(request, 'adm/supervise.html', {'structures': ret})
下面是正确的代码,主要是用了json.dumps,另外前台使用数据需要加 |safe 关键字
return render(request, 'adm/supervise.html', {'structures': json.dumps(ret)}) # 注意用json.dumps进行序列化,前端加|safe
classSuperviseView(LoginRequiredMixin, TemplateView):#template_name = 'adm/supervise.html'
defget(self, request):#{"value": "2", "title": "办公室"}
structure_list =[]
structures_dict={}
structures= Structure.objects.exclude(id__in=[1, 5]).values()for item instructures:
structure_dict={}
dict_value= str(item['id'])
dict_name= item['name']#dict_text = item.get('id') # 从queryset中取值的方法
structure_dict.update({'value': dict_value, 'title': dict_name})
structure_list.append(structure_dict)
structures_dict= {'structures': structure_list}
ret=structures_dictreturn render(request, 'adm/supervise.html', {'structures': json.dumps(ret)}) #注意用json.dumps,前端加|safe
如果后台不需要返回html,只要返回接口数据可以
ret = {'structures':list}return HttpResponse(json.dumps(ret),content_type="application/json")
Ajax跨域访问出现Uncaught SyntaxError: Unexpected token : 解决方案
原理讲的比较清楚,学习。