fix: 邮箱字段设置为唯一且必填,改善错误提示

后端改动:
- User.email 设置为 unique=True,确保每个邮箱只能注册一次
- 这样 SendCodeView 能正确查找到已注册的邮箱

前端改动:
- LoginView 增加详细的错误日志输出
- 捕获更多错误信息类型帮助调试

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
TianyangZhang 2026-03-25 16:09:48 +08:00
parent 12697c5750
commit b6d5a51c3d
3 changed files with 25 additions and 1 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 4.2.20 on 2026-03-25 08:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('accounts', '0003_alter_user_phone'),
]
operations = [
migrations.AlterField(
model_name='user',
name='email',
field=models.EmailField(max_length=254, unique=True),
),
]

View File

@ -54,6 +54,7 @@ class User(AbstractUser):
('admin', '公司管理员'), ('admin', '公司管理员'),
('seeker', '求职者'), ('seeker', '求职者'),
] ]
email = models.EmailField(unique=True) # 设置邮箱为唯一且必填
role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='seeker') role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='seeker')
phone = models.CharField(max_length=20) phone = models.CharField(max_length=20)
organization = models.ForeignKey( organization = models.ForeignKey(

View File

@ -169,7 +169,12 @@ async function handleSendCode() {
isLocked.value = false isLocked.value = false
startCountdown() startCountdown()
} catch (err) { } catch (err) {
ElMessage.error(err.response?.data?.error || err.response?.data?.email?.[0] || '发送失败,请检查邮箱是否正确') const errorMsg = err.response?.data?.error ||
err.response?.data?.email?.[0] ||
err.response?.data?.detail ||
'发送失败,请检查邮箱是否正确'
console.error('SendCode Error:', err.response?.data)
ElMessage.error(errorMsg)
} finally { } finally {
sendingCode.value = false sendingCode.value = false
} }