[Answer]-How to perform custom form validation in views in Django

1👍

If you need the request when validating the form, you should simply pass it in.

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')
        super(MyForm, self).__init__(*args, **kwargs)

    def clean(self):
        if is_ip_banned(self.request):
            raise forms.ValidationError('You have been banned')

 class MyView(forms.Form):
     def get_form(self, form_class):
         form_kwargs = self.get_form_kwargs()
         form_kwargs['request'] = self.request
         return form_class(**form_kwargs)

Leave a comment