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

在Django视图中校验邮箱/用户名是否已存在于数据库

在Django视图中实现用户名和邮箱的唯一性校验

你可以在创建用户前,通过filter()配合exists()方法高效检查数据库中是否已存在相同的用户名或邮箱,具体修改后的代码如下:

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from django.contrib.auth.hashers import make_password
import datetime
from .models import RegistrationRegister  # 确保导入你的模型

@api_view(['POST'])
def registerUser(request):        
    f_name = request.data.get('f_name')
    l_name = request.data.get('l_name')
    username = request.data.get('username')
    email_id = request.data.get('email_id')
    password = make_password(request.data.get('password'))

    # 校验用户名是否已存在
    if RegistrationRegister.objects.filter(username=username).exists():
        return Response({"error": "该用户名已被注册"}, status=status.HTTP_400_BAD_REQUEST)
    
    # 校验邮箱是否已存在
    if RegistrationRegister.objects.filter(email_id=email_id).exists():
        return Response({"error": "该邮箱已被注册"}, status=status.HTTP_400_BAD_REQUEST)
    
    # 校验通过后创建用户
    RegistrationRegister.objects.create(
        f_name=f_name, 
        l_name=l_name,
        username=username, 
        email_id=email_id,
        password=password,
        created=datetime.datetime.now().isoformat()
    )
    
    return Response("User registered successfully ")

关键说明:

  • 用exists()做存在性校验:它会在查询到第一条匹配记录时立即停止,性能比count()更高效。
  • 返回规范状态码:校验失败时返回400 Bad Request,符合REST API的错误反馈规范。
  • 明确错误提示:分别针对用户名和邮箱返回专属提示,方便用户定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:50:28