Files
webprewviewapi/account/api.py
2025-03-03 08:22:12 +08:00

46 lines
1.2 KiB
Python

from django.contrib.auth import authenticate, login, logout
from ninja import Router
from ninja.errors import HttpError
from .schemas import UserRegistrationSchema, UserLoginSchema
from .models import User
router = Router()
@router.get("/")
def account(request):
return {"message": "success"}
@router.post("/register")
def user_register(request, payload: UserRegistrationSchema):
if User.objects.filter(username=payload.username).exists():
raise HttpError(400, "Username already exists")
User.objects.create_user(
username=payload.username,
email=payload.email,
password=payload.password,
)
return {"message": "User created successfully"}
@router.post("/login")
def user_login(request, payload: UserLoginSchema):
user = authenticate(username=payload.username, password=payload.password)
if user is not None:
login(request, user)
return request.user.get_username()
else:
raise HttpError(401, "Invalid credentials")
@router.post("/logout")
def user_logout(request):
logout(request)
@router.get("/profile")
def current_user_profile(request):
# 暂时这样写
return request.user.get_username()