Django注册错误信息翻译不全问题求助(DRF与SimpleJWT环境)
修复DRF注册错误信息波兰语翻译不完整问题
方法1:自定义序列化器验证逻辑(最直接)
在注册用的序列化器中,重写email字段的验证方法,直接返回正确的波兰语提示:
from rest_framework import serializers from django.contrib.auth.models import User class RegisterSerializer(serializers.ModelSerializer): class Meta: model = User fields = ('email', 'username', 'password') def validate_email(self, value): if User.objects.filter(email=value).exists(): raise serializers.ValidationError("Istnieje już konto użytkownika z tą wartością pola email.") return value
方法2:补全DRF官方翻译文件
- 找到虚拟环境中DRF的波兰语翻译文件:路径一般为
venv/lib/pythonX.X/site-packages/rest_framework/locale/pl/LC_MESSAGES/django.po(替换X.X为你的Python版本) - 打开该文件,添加或修改对应翻译条目:
msgid "user account with this email already exists." msgstr "Istnieje już konto użytkownika z tą wartością pola email."
- 编译翻译文件生成
.mo格式:
msgfmt django.po -o django.mo
注意:更新DRF后该修改会被覆盖,建议将修改后的翻译文件复制到项目自定义locale目录:
- 在项目根目录创建
locale/pl/LC_MESSAGES文件夹- 放入修改后的
django.po和django.mo- 在
settings.py中配置:import os from django.conf import settings LOCALE_PATHS = [ os.path.join(settings.BASE_DIR, 'locale'), ]
方法3:排查simplejwt的翻译(若错误来自JWT组件)
如果错误提示由rest_framework_simplejwt抛出,重复方法2的步骤:找到其波兰语翻译文件,添加对应翻译条目并编译,或迁移到项目自定义locale目录。
内容的提问来源于stack exchange,提问作者Przemek
相关产品推荐
相关产品推荐

