Django重定向至登录页时自定义表单属性不生效问题求助
问题原因
出现该现象的核心原因是重定向到登录页时调用的不是你自定义的带样式表单,属于Django登录视图的常见配置遗漏:
你自定义的MyLoginView没有显式指定form_class参数,默认会继承父类LoginView的配置,使用Django原生的AuthenticationForm,原生表单没有你添加的form-control类属性。
直接访问登录页样式正常,大概率是你直接访问的路由对应的视图单独配置了自定义表单,和login_required权限校验重定向的登录视图不是同一个。
最优解决方法
按以下两步配置即可覆盖所有登录场景的样式统一:
- 给自定义登录视图指定你写的带样式的表单类,修改
MyLoginView代码:
class MyLoginView(LoginView): template_name = 'registration/login.html' # 新增该行,指定使用自定义表单 form_class = MyAuthenticationForm def form_valid(self, form): response = super().form_valid(form) messages.success(self.request, f'Welcome {self.request.user}') return response
- 确认项目
settings.py中LOGIN_URL配置指向你自定义登录视图对应的路由,确保所有权限校验的重定向都走你自定义的登录视图:
# 路径对应你自己配置的登录路由即可 LOGIN_URL = '/login/'
配置完成后不管是直接访问登录页,还是被权限拦截重定向到登录页,都会加载带form-control类的自定义表单,样式即可统一生效。
内容的提问来源于stack exchange,提问作者mharre
相关产品推荐
相关产品推荐

