news 2026/7/30 22:43:39

实例解释遇到前端报错时如何排查问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实例解释遇到前端报错时如何排查问题

前端页面报错:

1、页面报错500,首先我们可以知道是服务端的问题,需要去看下服务端的报错信息:

2、首先我们查看下前端是否给后端传了id:

我们可以看到接口是把ID返回了,就需要再看下p_id是什么情况了。

3、我们再次请求,把p_id进行打印,看下具体是什么:

put接口代码:

  1. class PutView(BaseView):

  2. def put(self, request):

  3. # Django 并没有处理PUT数据,不可以使用request.PUT

  4. # 实际put传过来的数据是在request.body中,而获取到的数据是:b'name=%E5%8F%82%E6%95%B06&desc=%E5%8F%82%E6%95%B06%E6%8F%8F%E8%BF%B0&value=100866'

  5. # 需要导入 from django.http import QueryDict,QueryDict(request.body)} 处理下

  6. # 更新数据:需要告知是具体更新哪一条数据

  7. # 获取要更新哪条数据的主键id

  8. p_id = request.PUT.get('id')

  9. print('p_id',p_id)

  10. # 通过id 从数据库中取这条数据 obj

  11. data_obj = self.model.objects.get(id=p_id)

  12. # 第一个参数:前端传过来的数据

  13. # 第二个参数(instance):数据库获取的,要更新的对象

  14. form_obj = self.form(request.PUT, instance=data_obj)

  15. if form_obj.is_valid():

  16. # 通过 form中的save方法进行数据更新

  17. form_obj.save()

  18. return NbResponse()

  19. # return JsonResponse({"code": 200, "msg": "put接口数据更新成功"})

  20. else:

  21. return NbResponse(code=500,msg=form_obj.errors.get_json_data())

middle_wares.py:

  1. class PutMethodMiddleware(MiddlewareMixin):

  2. def process_request(self, request):

  3. # 请求过来之后,先走到这里

  4. if request.method == 'PUT':

  5. request.PUT = QueryDict(request.body)

分析:因Django中没有PUT 方法,是我们在 middle_wares.py 中分装了后实现的PUT 方法,所以我们就需要看下【QueryDict(request.body)】返回的是什么:

  1. class PutMethodMiddleware(MiddlewareMixin):

  2. def process_request(self, request):

  3. # 请求过来之后,先走到这里

  4. if request.method == 'PUT':

  5. print('QueryDict(request.body)===',QueryDict(request.body))

  6. request.PUT = QueryDict(request.body)

结果:

  1. QueryDict(request.body)=== <QueryDict: {'------WebKitFormBoundarycRPtgGxEmmEAlBmC\r\nContent-Disposition: form-data': [''], ' name': ['"name"\r\n\r\n继

  2. 续测试111\r\n------WebKitFormBoundarycRPtgGxEmmEAlBmC\r\nContent-Disposition: form-data', '"value"\r\n\r\n继续测试\r\n------WebKitFormBoundarycRPtgGxEmm

  3. EAlBmC\r\nContent-Disposition: form-data', '"desc"\r\n\r\n继续测试\r\n------WebKitFormBoundarycRPtgGxEmmEAlBmC\r\nContent-Disposition: form-data', '"id"

  4. \r\n\r\n19\r\n------WebKitFormBoundarycRPtgGxEmmEAlBmC--\r\n']}>

我们可以发现数据格式并不是我们以往的那样,我就需要回到前端中查看下【Request Headers】中的信息:

Content-Type发生了变化,所以传过来的数据也发生了变化,所以后端代码就需要把代码进行调整,兼容这种传递的方式。

查验源码后,进行调整:

  1. class PutMethodMiddleware(MiddlewareMixin):

  2. @staticmethod

  3. def process_request(self, request):

  4. # 请求过来之后先走到这里,然后再去请求视图

  5. if request.method == 'PUT':

  6. if 'boundary' in request.content_params.kes():

  7. put_data,files = request.parse_file_upload(request.MEAT,request)

  8. request.PUT = put_data

  9. request._files = files # 是因为request.FILES 里面取值的时候,就是_files

  10. else:

  11. request.PUT = QueryDict(request.bady)

已可正常修改无报错:

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 22:02:12

9、深入解析 SQL 注入漏洞:原理、案例与防范

深入解析 SQL 注入漏洞:原理、案例与防范 1. 漏洞搜索要点 在搜索漏洞时,最好先确认底层技术(如 Web 框架、前端渲染引擎等),以此识别可能的攻击向量和测试思路。模板引擎种类繁多,这使得确定在所有情况下哪些方法可行、哪些不可行变得困难,但了解所使用的技术有助于克…

作者头像 李华
网站建设 2026/7/28 14:43:17

GOCAD三维地质建模

用Petrel进行三维地质建模以后&#xff0c;三维地质模型可以导出RESQML格式的文件。RESQML&#xff08;RESQML的英文全称是 Reservoir Characterization Markup Language&#xff09;是一种基于XML和HDF5的地质与油藏建模数据交换标准&#xff0c;主要用于石油勘探开发、地质工…

作者头像 李华
网站建设 2026/7/30 6:35:22

2025 年网络安全学习路线:从零基础到实战大神,避开 90% 的坑(非常详细,附工具包以及学习资源包)

2025 年网络安全学习路线&#xff1a;从零基础到实战大神&#xff0c;避开 90% 的坑 2025 年&#xff0c;数字化浪潮下的网络世界暗流涌动。数据泄露、勒索软件、供应链攻击如同悬在头顶的利剑&#xff0c;让企业和个人都绷紧了神经。 与此同时&#xff0c;网络安全人才市场却…

作者头像 李华
网站建设 2026/7/30 7:33:30

Reachability隐私合规完全指南:iOS 17+一键配置解决方案

Reachability隐私合规完全指南&#xff1a;iOS 17一键配置解决方案 【免费下载链接】Reachability ARC and GCD Compatible Reachability Class for iOS and MacOS. Drop in replacement for Apple Reachability 项目地址: https://gitcode.com/gh_mirrors/re/Reachability …

作者头像 李华
网站建设 2026/7/30 9:36:14

初等数论终极指南:密码学必备的5个核心数学原理

初等数论终极指南&#xff1a;密码学必备的5个核心数学原理 【免费下载链接】初等数论陈景润密码学要用到 pdf版本&#xff09; 项目地址: https://gitcode.com/open-source-toolkit/b1390 在当今信息安全至关重要的时代&#xff0c;初等数论作为密码学的数学基石&#…

作者头像 李华
网站建设 2026/7/31 19:46:25

中文论文格式模板使用指南

中文论文格式模板使用指南 【免费下载链接】中文论文格式模板下载分享 中文论文格式模板下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/90604 学术论文写作中&#xff0c;规范的格式要求往往让许多研究者感到困扰。为了简化这一过程&#xff…

作者头像 李华