diff --git a/account/api.py b/account/api.py index 4f1e410..517d450 100644 --- a/account/api.py +++ b/account/api.py @@ -20,7 +20,7 @@ router = Router() @router.post("/register") def user_register(request, payload: UserRegistrationSchema): if User.objects.filter(username=payload.username).exists(): - return HttpError(400, "用户已存在") + raise HttpError(400, "用户已存在") User.objects.create_user( username=payload.username, email=payload.email, @@ -36,7 +36,7 @@ def user_login(request, payload: UserLoginSchema): login(request, user) return {"username": user.username, "role": user.role} else: - return HttpError(401, "账号密码错误") + raise HttpError(401, "账号密码错误") @router.post("/logout") @@ -78,7 +78,7 @@ def batch_create(request, payload: BatchUsersIn): usernames.append(username) existing_users = User.objects.filter(username__in=usernames) if existing_users.exists(): - return HttpError(400, "有些用户已经存在,创建失败") + raise HttpError(400, "有些用户已经存在,创建失败") for username in usernames: digits = [str(random.randint(2, 9)) for _ in range(6)] @@ -102,4 +102,4 @@ def toggle_user_is_active(request, id: int): "message": f"{user.username} {'解封' if user.is_active else '封号'}成功" } except User.DoesNotExist: - return HttpError(404, "查无此人") + raise HttpError(404, "查无此人") diff --git a/account/decorators.py b/account/decorators.py index f5c20e9..06f3906 100644 --- a/account/decorators.py +++ b/account/decorators.py @@ -11,12 +11,12 @@ def _require(roles): @wraps(func) def wrapper(request, *args, **kwargs): if not request.user.is_authenticated: - return HttpError(401, "用户未登录") + raise HttpError(401, "用户未登录") try: if request.user.role not in roles: - return HttpError(403, "你没有权限") + raise HttpError(403, "你没有权限") except User.DoesNotExist: - return HttpError(404, "用户不存在") + raise HttpError(404, "用户不存在") return func(request, *args, **kwargs) return wrapper diff --git a/task/migrations/0002_alter_task_display.py b/task/migrations/0002_alter_task_display.py new file mode 100644 index 0000000..75bc56c --- /dev/null +++ b/task/migrations/0002_alter_task_display.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.6 on 2025-03-10 10:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('task', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='task', + name='display', + field=models.IntegerField(db_index=True, unique=True), + ), + ] diff --git a/task/models.py b/task/models.py index cbf64aa..e2464e1 100644 --- a/task/models.py +++ b/task/models.py @@ -8,7 +8,7 @@ class Task(TimeStampedModel): ("tutorial", "Tutorial"), ] - display = models.IntegerField(unique=True) + display = models.IntegerField(unique=True, db_index=True) title = models.CharField(max_length=100) content = models.TextField() task_type = models.CharField( diff --git a/task/tutorial.py b/task/tutorial.py index ef204a1..b88c270 100644 --- a/task/tutorial.py +++ b/task/tutorial.py @@ -20,11 +20,11 @@ def get_all_public_display(request): @router.get("/{display}", response=TutorialAll) -def get(request, display: int): +async def get(request, display: int): try: - return Tutorial.objects.get(display=display) + return await Tutorial.objects.aget(display=display) except Tutorial.DoesNotExist: - return HttpError(404, "此序号无教程") + raise HttpError(404, "此序号无教程") @router.post("/") @@ -35,7 +35,7 @@ def create_or_update(request, payload: TutorialIn): item.title = payload.title item.content = payload.content item.is_public = payload.is_public - item.save() + item.asave() return {"message": "更新成功"} except Tutorial.DoesNotExist: Tutorial.objects.create(**payload.dict()) @@ -48,11 +48,11 @@ def toggle_public(request, display: int): try: item = Tutorial.objects.get(display=display) item.is_public = not item.is_public - item.save() + item.asave() label = "公开" if item.is_public else "隐藏" return {"message": f"【{item.display}】{item.title} 已{label}"} except Tutorial.DoesNotExist: - return HttpError(404, "此序号无教程") + raise HttpError(404, "此序号无教程") @router.delete("/{display}")