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

这篇具有很好参考价值的文章主要介绍了实例解释遇到前端报错时如何排查问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

前端页面报错:

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

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

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

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

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

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

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

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

put接口代码:

class PutView(BaseView):

    def put(self, request):
        # Django 并没有处理PUT数据,不可以使用request.PUT
        # 实际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'
        # 需要导入 from django.http import QueryDict,QueryDict(request.body)} 处理下
        # 更新数据:需要告知是具体更新哪一条数据
        # 获取要更新哪条数据的主键id
        p_id = request.PUT.get('id')
        print('p_id',p_id)
        # 通过id 从数据库中取这条数据 obj
        data_obj = self.model.objects.get(id=p_id)
        # 第一个参数:前端传过来的数据
        # 第二个参数(instance):数据库获取的,要更新的对象
        form_obj = self.form(request.PUT, instance=data_obj)
        if form_obj.is_valid():
            # 通过 form中的save方法进行数据更新
            form_obj.save()
            return NbResponse()
            # return JsonResponse({"code": 200, "msg": "put接口数据更新成功"})
        else:
            return NbResponse(code=500,msg=form_obj.errors.get_json_data())
middle_wares.py:
class PutMethodMiddleware(MiddlewareMixin):
    def process_request(self, request):
        # 请求过来之后,先走到这里
        if request.method == 'PUT':
            request.PUT = QueryDict(request.body)

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

class PutMethodMiddleware(MiddlewareMixin):
    def process_request(self, request):
        # 请求过来之后,先走到这里
        if request.method == 'PUT':
            print('QueryDict(request.body)===',QueryDict(request.body))
            request.PUT = QueryDict(request.body)

结果:

QueryDict(request.body)=== <QueryDict: {'------WebKitFormBoundarycRPtgGxEmmEAlBmC\r\nContent-Disposition: form-data': [''], ' name': ['"name"\r\n\r\n继
续测试111\r\n------WebKitFormBoundarycRPtgGxEmmEAlBmC\r\nContent-Disposition: form-data', '"value"\r\n\r\n继续测试\r\n------WebKitFormBoundarycRPtgGxEmm
EAlBmC\r\nContent-Disposition: form-data', '"desc"\r\n\r\n继续测试\r\n------WebKitFormBoundarycRPtgGxEmmEAlBmC\r\nContent-Disposition: form-data', '"id"
\r\n\r\n19\r\n------WebKitFormBoundarycRPtgGxEmmEAlBmC--\r\n']}>

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

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

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

查验源码后,进行调整:

class PutMethodMiddleware(MiddlewareMixin):
    @staticmethod
    def process_request(self, request):
        # 请求过来之后先走到这里,然后再去请求视图
        if request.method == 'PUT':
            if 'boundary' in request.content_params.kes():
                put_data,files = request.parse_file_upload(request.MEAT,request)
                request.PUT = put_data
                request._files = files # 是因为request.FILES 里面取值的时候,就是_files
            else:
                request.PUT = QueryDict(request.bady)

已可正常修改无报错:

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

 行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

实例解释遇到前端报错时如何排查问题,软件测试,前端,状态模式,功能测试,软件测试,自动化测试,程序人生,职场和发展文章来源地址https://www.toymoban.com/news/detail-853601.html

到了这里,关于实例解释遇到前端报错时如何排查问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 曾经遇到过的无法解释的问题

    因为不能直接展示生产数据与生产数据结构,所以写一个简单的例子 class Stu{         private String name;         private int age;         getter setter constructor 略 } ListStu list = new ArrayList(); list.add(new Stu(\\\"s1\\\",16)); list.add(new Stu(\\\"s2\\\",36)); list.add(new Stu(\\\"s3\\\",86)); list.add(new Stu(\\\"s4\\\",106)); boolean 

    2024年02月06日
    浏览(30)
  • android 出现Duplicate class 报错时 解决方案

    可以选择直接复制 我的标题 然后sync 就ok了 android.useAndroidX=true 表示“Android插件会使用对应的AndroidX库,而非Support库”; 未设置时默认为false; android.enableJetifier=true 表示Android插件会通过重写其二进制文件来自动迁移现有的第三方库,以使用AndroidX依赖项;未设置时默认为f

    2024年02月05日
    浏览(30)
  • 播放WebRTC开源库回调出来的视频码流时遇到的内存越界问题排查

    目录 1、执行memset操作时遇到了内存访问违例,导致程序崩溃

    2024年02月09日
    浏览(44)
  • 开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题排查

    目录 1、在非100%的显示比例下放大器采集到的桌面图像不全问题 1.1、通过manifest文件禁止系统对软件进行缩放

    2024年02月08日
    浏览(34)
  • 用户反映在浏览器中使用AI工具 Copilot 遇到严重卡顿问题,微软官方给出初步解释

    近日,多位用户反馈在使用Edge和Chrome浏览器中的Copilot时出现卡顿问题,甚至需要重启浏览器才能解决。对此,微软广告和网络服务部门CEO米哈伊尔·帕拉欣表示,问题可能与Edge浏览器的“效率模式”有关。 微软中国官方网址链接:https://www.microsoft.com/zh-cn AI工具专区:+AI工具

    2024年01月24日
    浏览(64)
  • 关于一个SFTP问题报错排查过程

    📓问题概述 日常运维工单为用户在文件服务器上建立账户之后,用户反馈登录报错;通过相邻网段服务器进行sftp登录报错如下: 百度一下过去经验,通过重启sshd服务和检查sshd_config配置都没问题。一筹莫展!!! 📌排查思路 尝试通过winscp客户端sftp登录,报连接异常情况

    2024年02月10日
    浏览(32)
  • 前端(一)——前端开发遇到的普遍问题以及解决策略

    😄博主:小猫娃来啦 😄文章核心: 前端开发遇到的普遍问题以及解决策略 有人说vue框架是基于mvvm实现的?这种说法对吗? mvc和mvvm的区别是什么? mvvm是否是mvc的升级? mvvm和mvc有什么关系?为什么有人说mvvm是基于mvc实现的? 什么时候使用mvc模式,什么时候使用mvvm模式?

    2024年02月08日
    浏览(32)
  • nginx反向代理https域名时,请求报错502问题排查

    微信公众号:运维开发故事,作者:冬子先生 一. 现象 在使用nginx反向代理后端服务器的时候,因为配置的是域名,导致HTTPS 请求转发失败,报 SSL 错误,js 报 502 img img 二. 排查过程 1、查看nginx日志,发现报502,但是本地curl upstream中的后端域名是可以正常通的 img 2、查看后端

    2024年02月11日
    浏览(32)
  • 用户信息授权报错“无效的AppID参数”问题排查解决过程

    今天记一个支付宝报错“无效的AppID参数”的问题排查解决过程,希望可以帮到大家。 今天在测试支付宝用户信息授权 换取授权访问令牌 的时候,遇到了一个报错:“无效的AppID参数”,本来以为是个简单的问题,结果还是花了一点时间去找原因,找到最后发现是自己脑子瓦

    2024年02月05日
    浏览(26)
  • 一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用

    我们都知道 ,python类中有三种常见的方法 ,分别是实例方法 ,类方法和静态方法 。那么这几个方法到底有什么作用 ? 它们之间有什么区别 ?该如何使用 ? 带着这些问题 ,下面我们就来了解下这三种方法 。 若我们要实现一个学生的类 ,里面要实现3功能,分别是: 功能

    2024年02月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包