You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django用户登录时密码明文显示、提交跳转404问题求助

问题1:密码输入明文显示

原因

自定义的UserLogin表单继承自ModelForm,Django User模型的password字段默认渲染为普通文本输入框,不会自动启用密码遮挡。

解决方法

修改Forms.py中的UserLogin类,给password字段指定密码输入控件:

from django.forms import PasswordInput

class UserLogin(ModelForm):
    class Meta:
        model = User
        fields= ('username', 'password')
        widgets = {
            'password': PasswordInput(),
        }

更推荐直接使用Django内置的AuthenticationForm,无需自行定义登录表单,已经默认处理了密码控件、字段校验等逻辑。

问题2:提交后跳转404错误

原因

HttpResponseRedirect中传入的是相对路径,会自动拼接在当前页面的URL路径后。你当前登录页路径为/login_user/,拼接后就变成了错误的/login_user/simple_investing/create_company.htm/。

解决方法

方法1:使用绝对路径跳转,路径开头添加斜杠:

return HttpResponseRedirect('/simple_investing/create_company.htm/')

方法2(更规范):给路由配置name属性,通过reverse函数动态生成路径,避免硬编码:

from django.urls import reverse

return HttpResponseRedirect(reverse('create_company')) # 对应urls.py中path的name参数

额外优化点

当前login_page视图中messages.success的调用位置错误,无论用户是否刚完成注册、是否登录成功,只要访问登录页就会弹出“账号创建成功”的提示,建议把这段逻辑移动到注册成功的跳转逻辑中,不要放在登录页视图的全局位置。

内容的提问来源于stack exchange,提问作者Mati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:06:03