Django - Пользовательский перевод для автоматически генерируемых сообщений Django
В проекте django, как получить доступ к сообщениям, автоматически генерируемым django?
После внедрения internationalization
кажется, что некоторые сообщения не были переведены. В частности, те, которые генерируются в процессе аутентификации.
Среди различных сообщений, к которым я пытаюсь получить доступ, есть и это: The two password fields didn’t match.
.
Я думал, что смогу:
- переопределить существующие
UserCreationForm
в представлениях - напишите предложение на английском языке, которое я хочу переопределить .
- используйте
from django.utils.translation import gettext as _
для захвата его в.po
файл.
Это кажется слишком сложным для того, чего я пытаюсь достичь. Есть ли более элегантный способ добиться этого?
forms.py:
class RegisterForm(UserCreationForm):
email = forms.EmailField(required=True)
def clean_email(self):
if User.objects.filter(email=self.cleaned_data['email']).exists():
raise forms.ValidationError(_("the given email is already registered"))
return self.cleaned_data['email']
class Meta:
model = User
fields = ["username", "email", "password1", "password2"]
def __init__(self,*args,**kwargs):
super(RegisterForm, self).__init__(*args, **kwargs)
#iterate over form fields and set label to false
for field_name, field in self.fields.items():
field.label = False
views.py
def register_user_form(request):
url = request.META.get('HTTP_REFERER')
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = True
user.save()
age_group = form.cleaned_data.get('age_group')
# check if userprofile with same username already exists
user_profile, created = UserProfile.objects.get_or_create(
user=user, defaults={'age_group': age_group})
if not created:
user_profile.age_group = age_group
user_profile.save()
user = authenticate(username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],)
login(request, user)
return redirect('index')
else:
for error in list(form.errors.values()):
messages.error(request, error)
return redirect('index')
else:
form = RegisterForm()
return redirect('template.html', {'form': form})