python+django开发中与前端交互中的知识归集梳理(ajax,render,json等)
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
class SuperviseView(LoginRequiredMixin, TemplateView): # template_name = 'adm/supervise.html' def get(self, request): # {"value": "2", "title": "办公室"} structure_list = [] structures_dict = {} structures = Structure.objects.exclude(id__in=[1, 5]).values() for item in structures: 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_dict return 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 : 解决方案
https://blog.csdn.net/huanmeng122/article/details/81508724
原理讲的比较清楚,学习。