Подтвердить что ты не робот

Django: Как я могу поместить гиперссылку <a>в ошибке проверки django из метода clean()?

Django: как я могу поместить гиперссылку <a> в ошибку проверки django из метода clean()? Я хочу поднять ошибку проверки, а в тексте ошибки есть гиперссылка <a href=""></a>, у которой есть ссылка, которая поможет пользователю исправить ошибку. Это ошибка проверки, которую я поднимаю в чистом методе формы. Есть ли способ пометить HTML для этой ошибки проверки как безопасную для вывода в виде HTML?

4b9b3361

Ответ 1

Вызовите mark_safe в строке сообщения об ошибке, когда вы поднимаете ValidationError

Ответ 2

Вы можете сделать это в определении поля формы без необходимости поднимать уровень проверки ValidationError следующим образом:

class RegistrationForm(ModelForm):
    ...

    ### Django established methods
    # form wide cleaning/validation
    def clean_email(self):
        """ prevent users from having same emails """
        email = self.cleaned_data["email"]
        try:
            User.objects.get(email__iexact=email)
            raise forms.ValidationError(
                    mark_safe(('A user with that email already exists, click this <a href="{0}">Password Reset</a> link'
                            ' to recover your account.').format(urlresolvers.reverse('PasswordResetView')))
                            )
        except User.DoesNotExist:
            return email

    ...

    ### Additional fields
    location = forms.RegexField(max_length=255,
        regex=r"^[\w' -]+, [\w'-]+, [\w'-]+, [\w'-]+$", #ex 1 Mclure St, Kingston, Ontario, Canada
        help_text="location, ex: Suite 212 - 1 Main St, Toronto, Ontario, Canada",
        error_messages={
            'invalid': mark_safe("Input format: <strong>suite - street</strong>, <strong>city</strong>, " 
                                "<strong>province/state</strong>, <strong><u>country</u></strong>. Only letters, "
                                "numbers, and '-' allowed.")})