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   

原理讲的比较清楚,学习。

posted on 2020-07-11 14:50  东门乱弹琴  阅读(605)  评论(0编辑  收藏  举报

导航