Django中div的alert alert-danger类样式不生效如何解决
解决方案
无需修改views.py的修复方案(推荐)
你遇到的样式失效问题本质是前端依赖缺失导致,完全不需要修改后端views.py代码,按以下步骤操作即可修复:
- 原因排查:你使用的
alert、alert-danger是Bootstrap框架的内置样式类,项目没有引入Bootstrap CSS文件时,浏览器无法识别这两个类对应的样式规则,只会渲染<strong>标签的默认加粗效果。 - 修复方法1:引入Bootstrap CSS
你可以直接引入官方Bootstrap CSS资源,或者将Bootstrap CSS文件下载到项目静态目录后引入到HTML模板的<head>标签中即可。 - 修复方法2:自定义样式(不想引入Bootstrap时使用)
直接在模板的<style>标签或者你的全局CSS文件中添加对应样式规则:.alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert-danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1; }
额外代码优化提示(非样式问题,可选处理)
你的现有代码存在两个不影响样式但会影响功能的问题:
- 确认密码的label标签
for属性错误,当前写的是{{ form.password.id_for_label }},需要修改为{{ form.confirm_password.id_for_label }},否则点击「确认密码」的文字无法自动聚焦到对应输入框。 - 现有代码直接调用
form.save()会将明文密码存入数据库,Django默认的authenticate方法只会校验哈希后的密码,会导致注册后登录失败。如果需要修复这个功能问题,可修改views.py中表单验证通过后的逻辑:if form.is_valid(): # 不要直接save,先设置哈希密码 user = form.save(commit=False) user.set_password(form.cleaned_data.get('password')) user.save() username = form.cleaned_data.get('name') password = form.cleaned_data.get('password') email = form.cleaned_data.get('email') user = authenticate(username=username, password=password, email=email) login(request, user) return redirect('index')
内容的提问来源于stack exchange,提问作者Igor Dzichkovskii
相关产品推荐
相关产品推荐

