我有Django的登录表单,在那里我需要做一些额外的检查我的清洁方法重定向:Django的 - 从形式的清洁方法
class LoginForm(BootstrapFormMixin, forms.Form):
email = forms.EmailField(required=True, max_length=30)
password = forms.CharField(required=True, widget=forms.PasswordInput)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = self.__class__.__name__.lower()
self.helper.form_action = ''
self.helper.layout = Layout(
Field('email'),
Field('password'),
Div(
Submit('submit', _('Login'),
css_class="btn btn-block btn-success"),
css_class=''
)
)
def clean(self):
email = self.cleaned_data.get('email')
password = self.cleaned_data.get('password')
user = authenticate(email=email, password=password)
if user:
company = user.company
if not company.is_active:
# here I want to make a redirect; if is it possible to add a flash message it would be perfect!
raise forms.ValidationError(_('Account activation is not finished yet'))
else:
raise forms.ValidationError(_('Invalid credentials'))
return self.cleaned_data
它可以正常工作,但是当凭据是正确的,但用户(is_active = False)我想将用户重定向到另一个视图并添加一些Flash消息(也许使用django.contrib.messages
)。
是否有可能做这样的重定向?
谢谢!
它是负责返回HTTP响应(包括重定向)的* view *。表单负责处理输入数据。他们不会返回响应,因此您无法从表单内部重定向。 – Alasdair
如何查看可能知道是否应该重定向或什么?我应该从表格中返回什么? – dease