You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中含特殊字符的Redis密码无法使用问题求助

Redis密码含特殊字符导致LOCATION配置报错的解决办法

问题描述

我有一台Redis服务器,其认证密码包含=和?字符。采用redis://[:password]@localhost:6397格式的LOCATION配置,具体配置如下:

'default': {
   'BACKEND': 'django_redis.cache.RedisCache',
   'LOCATION': 'redis://:6?V4=434#ef4@localhost:6379/1',
   'OPTIONS': {
       'CLIENT_CLASS': 'django_redis.client.DefaultClient',
   }
},

但始终报错TypeError: __init__() got an unexpected keyword argument 'V4',原因是LOCATION格式会将密码中的=和?识别为URL分隔符。尝试转义特殊字符为6\?V4\=434#ef4后,又出现ValueError: Port could not be cast to integer value as '6\\'错误。请问能否不将密码移至OPTIONS中解决该问题?

解决方案

可以通过URL编码密码中的特殊字符解决,无需将密码移至OPTIONS中。

  • 对密码里的特殊字符单独做URL编码:
    • ? 对应编码为 %3F
    • = 对应编码为 %3D
  • 将编码后的密码替换到LOCATION字段中,修改后的配置如下:
'default': {
   'BACKEND': 'django_redis.cache.RedisCache',
   'LOCATION': 'redis://:6%3FV4%3D434#ef4@localhost:6379/1',
   'OPTIONS': {
       'CLIENT_CLASS': 'django_redis.client.DefaultClient',
   }
},

URL编码会把特殊字符转换为URL安全的格式,既不会被解析成URL分隔符,也不会触发端口解析错误,完美适配LOCATION的URL格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:03:19