add. 添加友情链接增删改查接口
This commit is contained in:
+74
-2
@@ -5,12 +5,14 @@ from typing import Optional, List
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import JsonResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
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
|
||||
from base.models import FriendLink, LinkCategory, PictureLink
|
||||
from base.schema import FriendLinkCreateSchema, FriendLinkSchema, LinkCategoryCreateSchema, LinkCategorySchema, \
|
||||
PictureLinkSchema, PictureLinkCreateSchema, PictureLinkUpdateSchema
|
||||
|
||||
# Create your views here.
|
||||
router = Router(tags=['base'])
|
||||
@@ -106,3 +108,73 @@ def update_link(request, id: int, data: FriendLinkCreateSchema):
|
||||
def delete_link(request, id: int):
|
||||
FriendLink.objects.get(id=id).delete()
|
||||
return {"success": True}
|
||||
|
||||
|
||||
# ================= 列表与创建 =================
|
||||
@router.get("/picture-link/", response=List[PictureLinkSchema])
|
||||
def get_picture_links(request):
|
||||
"""
|
||||
获取所有图片链接
|
||||
GET /api/picture-link/
|
||||
"""
|
||||
# 这里的排序与 models.py 中的 Meta.ordering 保持一致
|
||||
return PictureLink.objects.all().order_by('order', '-created_at')
|
||||
|
||||
|
||||
@router.post("/picture-link/", response=PictureLinkSchema)
|
||||
def create_picture_link(request, payload: PictureLinkCreateSchema):
|
||||
"""
|
||||
新增图片链接
|
||||
POST /api/picture-link/
|
||||
"""
|
||||
# 直接利用 payload 创建对象
|
||||
# 注意:这里调用 save() 会触发你 models.py 中定义的 "最多4个启用" 的逻辑
|
||||
link = PictureLink.objects.create(
|
||||
name=payload.name,
|
||||
picture=payload.picture,
|
||||
url=payload.url,
|
||||
order=payload.order,
|
||||
is_active=payload.is_active
|
||||
)
|
||||
return link
|
||||
|
||||
|
||||
# ================= 单个对象操作 =================
|
||||
@router.get("/picture-link/{link_id}", response=PictureLinkSchema)
|
||||
def get_picture_link(request, link_id: int):
|
||||
"""
|
||||
获取单个图片链接详情
|
||||
GET /api/picture-link/{id}/
|
||||
"""
|
||||
return get_object_or_404(PictureLink, id=link_id)
|
||||
|
||||
|
||||
@router.put("/picture-link/{link_id}", response=PictureLinkSchema)
|
||||
def update_picture_link(request, link_id: int, payload: PictureLinkUpdateSchema):
|
||||
"""
|
||||
更新图片链接
|
||||
PUT /api/picture-link/{id}/
|
||||
"""
|
||||
link = get_object_or_404(PictureLink, id=link_id)
|
||||
|
||||
# 更新字段
|
||||
if payload.name is not None: link.name = payload.name
|
||||
if payload.picture is not None: link.picture = payload.picture
|
||||
if payload.url is not None: link.url = payload.url
|
||||
if payload.order is not None: link.order = payload.order
|
||||
if payload.is_active is not None: link.is_active = payload.is_active
|
||||
|
||||
# 保存,同样会触发 models.py 中的限制逻辑
|
||||
link.save()
|
||||
return link
|
||||
|
||||
|
||||
@router.delete("/picture-link/{link_id}")
|
||||
def delete_picture_link(request, link_id: int):
|
||||
"""
|
||||
删除图片链接
|
||||
DELETE /api/picture-link/{id}/
|
||||
"""
|
||||
link = get_object_or_404(PictureLink, id=link_id)
|
||||
link.delete()
|
||||
return {"success": True}
|
||||
|
||||
Reference in New Issue
Block a user