You need to enable JavaScript to run this app. Django将SECRET_KEY存入.env文件后出现Incorrect padding错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Django将SECRET_KEY存入.env文件后出现Incorrect padding错误如何解决

根本原因

该报错是base64.b64decode解码时输入的字符串长度不符合base64规则导致的,本质是你通过python-decouple从.env文件读取到的SECRET_KEY和你硬编码的原值不一致,要么被截断、要么多了多余字符。
最常见的触发场景是Django自动生成的SECRET_KEY包含#字符,python-decouple默认会将#后的内容识别为注释直接截断,导致读取到的SECRET_KEY长度比原值短,解码时触发padding错误。

解决步骤
  • 调整.env文件的SECRET_KEY写法:
    • 如果SECRET_KEY不含#字符,直接写值即可,不要加前后引号、不要在行尾留多余空格
    # 正确写法(无#的情况)
    SECRET_KEY=django-insecure-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    • 如果SECRET_KEY包含#字符,必须用双引号把整个值包裹起来,避免内容被截断
    # 正确写法(含#的情况)
    SECRET_KEY="django-insecure-xxxx#xxxxxxxxx#xxxxxxxxxxxxxxxxxxxxxxxxx"
    
  • 验证读取结果是否正确
    在settings.py中加入临时调试代码,确认读取的内容和硬编码的原值完全一致:
# 临时调试代码,确认密钥一致性
original_key = "你之前硬编码的正常可用的SECRET_KEY"
read_key = config('SECRET_KEY')
print(original_key == read_key)
# 如果输出为False,打印两者的原始字符对比差异
print(repr(original_key))
print(repr(read_key))
  • 排查其他配置项
    如果确认SECRET_KEY读取正确仍报错,检查其他需要base64解码的配置项(比如加密存储的数据库密码、第三方服务密钥等)是否存在同样的读取截断、多余字符问题。

内容的提问来源于stack exchange,提问作者Rishabh Dhyani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 20:36:04