update. 完成友链以及分类接口

This commit is contained in:
2026-04-07 11:55:23 +08:00
parent 60366b7eb1
commit 402f7e512e
2 changed files with 107 additions and 7 deletions
+37
View File
@@ -0,0 +1,37 @@
from ninja import Schema
from datetime import datetime
from typing import Optional, List
class LinkCategorySchema(Schema):
id: int
name: str
code: str
order: int
is_active: bool
created_at: Optional[datetime] = None
class FriendLinkSchema(Schema):
id: int
category_id: int
name: str
url: str
order: int
is_active: bool
created_at: Optional[datetime] = None
class LinkCategoryCreateSchema(Schema):
name: str
code: str
order: int = 0
is_active: bool = True
class FriendLinkCreateSchema(Schema):
category_id: int
name: str
url: str
order: int = 0
is_active: bool = True
+70 -7
View File
@@ -1,15 +1,19 @@
from django.shortcuts import render
from ninja import Router
from django.http import JsonResponse
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
import os
import uuid
from datetime import datetime
from typing import Optional, List
from django.conf import settings
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods
from ninja import Router
from base.models import FriendLink, LinkCategory
from base.schema import FriendLinkCreateSchema, FriendLinkSchema, LinkCategoryCreateSchema, LinkCategorySchema
# Create your views here.
router = Router(tags=['content'])
router = Router(tags=['base'])
@csrf_exempt
@@ -43,3 +47,62 @@ def custom_upload_file(request):
"url": file_url,
"default": file_url
})
# =========================
# 分类 CRUD
# =========================
@router.get("/link-categories", response=List[LinkCategorySchema])
def list_categories(request):
return LinkCategory.objects.all()
@router.post("/link-categories", response=LinkCategorySchema)
def create_category(request, data: LinkCategoryCreateSchema):
return LinkCategory.objects.create(**data.dict())
@router.put("/link-categories/{id}", response=LinkCategorySchema)
def update_category(request, id: int, data: LinkCategoryCreateSchema):
obj = LinkCategory.objects.get(id=id)
for k, v in data.dict().items():
setattr(obj, k, v)
obj.save()
return obj
@router.delete("/link-categories/{id}")
def delete_category(request, id: int):
LinkCategory.objects.get(id=id).delete()
return {"success": True}
# =========================
# 友情链接 CRUD
# =========================
@router.get("/friend-links", response=List[FriendLinkSchema])
def list_links(request, category_id: Optional[int] = None):
query = FriendLink.objects.all()
if category_id:
query = query.filter(category_id=category_id)
return query
@router.post("/friend-links", response=FriendLinkSchema)
def create_link(request, data: FriendLinkCreateSchema):
return FriendLink.objects.create(**data.dict())
@router.put("/friend-links/{id}", response=FriendLinkSchema)
def update_link(request, id: int, data: FriendLinkCreateSchema):
obj = FriendLink.objects.get(id=id)
for k, v in data.dict().items():
setattr(obj, k, v)
obj.save()
return obj
@router.delete("/friend-links/{id}")
def delete_link(request, id: int):
FriendLink.objects.get(id=id).delete()
return {"success": True}