【django】4.0版本使用多环境下restframework坑

django4.0版本使用多环境下restframework巨坑!

0).背景

  • 最近在使用django重构之前的老项目,该项目包含四个环境的配置文件
  • 于是极为省力的使用了pip install django,结果发现django已经升级到4.1.4了,接着我很自信的开始runserver,结果就是一堆报错,以下记录我在使用中的一些错误,希望对你们有用!
  • 持续更新!!!
    在这里插入图片描述
# DRF配置项
REST_FRAMEWORK = {
    'UNICODE_JSON': True,
    # 异常处理
    "EXCEPTION_HANDLER": "meiduo_mall.utils.exceptions.exception_handler",
    # JWT
    'DEFAULT_PERMISSION_CLASSES': ( # 设置所有接口使用JWT进行权限验证
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': ( # 用户登陆认证方式
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    )
},
JWT_AUTH = {
    # token 有效期
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
    # 开启Token更新
    'JWT_ALLOW_REFRESH': True,
    # 续期有效期(该设置可在24小时内带未失效的token进行续期) 
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(hours=24)
}

1). djangorestframework-jwt使用导致元祖的索引为str

  1. 使用restframework以及restframework-jwt后,无法启动项目,报错信息: TypeError: tuple indices must be integers or slices, not str,通过报错信息的行数找到包:restframework.settings
    在这里插入图片描述

  2. 主要报错信息在val=self.user_settings[attr],这时候我们打印self.user_settings信息,发现读取settings文件的内容格式已经转为tuple[dict],attr为我们在配置项中设置的key值,显然源码的getattr魔法中通过tuple获取key值是错误的(这里也没有做对应的except处理)

  3. 将val=self.user_settings[attr]修改为val=self.user_settings[0][attr],我以为到这里就结束了…

  4. 重新runserver,发现有两个包在version>django4.0被移除
    在这里插入图片描述
    在这里插入图片描述

  5. 在settings下重新指定smart_text
    在这里插入图片描述

  6. 注释源码中的from django.utils.translation import ugettext as _ 改为from django.utils.translation import gettext_lazy as _ (ps: 修改的地方有两个,都在上图)

  7. 重新runserver
    在这里插入图片描述

  8. 测试
    在这里插入图片描述将相关代码注释掉,发现jwt认证已经生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Django是一个流行的Web应用程序框架,它提供了一个高度复用的开发模式,使得开发者可以更加专注于业务逻辑,而不是底层实现。随着Django 4.0的发布,官方中文文档也越来越完善。 Django 4.0的中文文档提供了全面的教程、参考和指南,涵盖了Django的核心概念、API和开发实践。该文档简洁明了、易于理解,帮助开发者快速入门,并且可以帮助更有经验的开发者深入了解Django的内部工作原理。 除了基本概念和API文档,该文档还提供了一些高级主题,如数据库、模板引擎、表单验证、安全性、缓存等。此外,开发者可以从文档中了解到Django的最佳实践,如如何设计良好的模型、如何优化性能、如何进行测试等。 总之,Django 4.0的中文文档是一个非常有价值的资源,无论是对新手还是具有丰富经验的开发者都很有帮助。如果你有兴趣学习Django,无论是作为个人或公司项目的基础,还是为了求职,强烈建议你参考该文档,你一定会从中受益匪浅。 ### 回答2: Django是一个开源的Web应用框架,许多开发人员和团队使用Django来开发高质量的Web应用程序。虽然Django的官方文档是英文的,但是有许多中文热心人制作了Django的中文文档。 Django4.0是Django的最新版本,中文文档也在不断更新中。Django4.0中文文档将Django的各种功能和特性作了详细的说明,并提供了许多实例和代码片段供开发人员参考和学习。 中文文档内容包括Django的开发环境搭建、模型设计、视图和模板的使用、表单和验证、静态文件、安全、中间件等等。中文文档还提供了Django的API文档和源码分析。 中文文档的制作过程是很艰苦的,制作者们为了将Django文档翻译的精准、易懂,不断阅读修改,受益的是国内众多Django爱好者。Django中文文档的出现,也为更多的开发人员提供了一个方便而全面的学习参考资料。 ### 回答3: Django 4.0 是一个非常强大的 Python Web 框架, 它的中文文档帮助用户更好地理解和使用该框架。中文文档网站提供了丰富的内容和指导,包括安装、开发流程、模型、视图、表单、模板、中间件等方面的内容,帮助用户更好地了解整个框架,并迅速上手使用。 中文文档以易懂的语言,详细介绍了 Django 4.0 的各个细节,包括如何创建项目、如何实现认证、如何使用 ORM 实现数据库的操作等,同时提供了许多实际的例子,让用户更好地理解框架的使用方式。 在文档中,透过全面的教程和案例,用户可以学习到如何搭建自己的 Web 应用程序,并且在开发的过程中,学会使用 Django 4.0 提供的各种强大功能,从而提高开发的效率和质量。 总的来说,Django 4.0 的中文文档是非常全面、详尽的,对于初学者来说非常友好,对于有经验的用户来说也提供了许多高级的用例和方法,这一切都为用户的学习和使用提供了巨大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值