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

如何修改DRF viewset中action的URL路径,使其支持.jpg格式后缀

问题解答

完全可以实现该需求,DRF的@action装饰器原生支持自定义路径匹配规则,常用实现方式有两种:

方式一:固定后缀匹配

如果只需要支持.jpg后缀,直接在@action装饰器中指定url_path参数即可:

from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework import viewsets

class YourModelViewSet(viewsets.ModelViewSet):
    # 原有视图逻辑省略

    @action(detail=True, methods=['get'], url_path='image.jpg')
    def image(self, request, pk=None):
        # 你的图片生成、读取逻辑
        image_content = get_target_image(pk)
        return Response(image_content, content_type='image/jpeg')

配置完成后生成的路由就会是你需要的path/to/api-point/<资源ID>/image.jpg格式,不需要修改其他路由配置。

方式二:多后缀动态匹配

如果后续需要支持.png、.webp等多种图片格式,可以在路径规则中增加后缀参数捕获:

@action(detail=True, methods=['get'], url_path=r'image\.(?P<suffix>jpg|png|webp)')
def image(self, request, pk=None, suffix=None):
    # 根据suffix参数返回对应格式的图片
    image_content = get_target_image(pk, img_format=suffix)
    return Response(image_content, content_type=f'image/{suffix}')

注意:如果你的Django配置了APPEND_SLASH = True,该规则不会受影响,DRF的路由生成逻辑会优先匹配自定义的url_path规则,不会自动补斜杠导致404。

内容的提问来源于stack exchange,提问作者Mohammad Reza Bozorgmehr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:54:03