DjangoRestFramework序列化完整图片url

DjangoRestFramework序列化完整图片urlDRF图片默认序列化目录格式一般为media/xxx.png,但这不是url,没法直接访问,在前端还需要进行一次字符串拼接,十分麻烦。serializer=CategorySerializer(category)returnResponse(serializer.data,status=status.HTTP_200_OK)如上面的代码,此时如果CategorySerializ…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

DRF图片默认序列化目录格式一般为media/xxx.png,但这不是url,没法直接访问,在前端还需要进行一次字符串拼接,十分麻烦。

serializer = CategorySerializer(category)
return Response(serializer.data, status=status.HTTP_200_OK)

如上面的代码,此时如果CategorySerializer中有图片资源,那么序列化出来就会是这种形式:media/web/6/img/10b5319a.jpg

若要改成url格式的话,需做如下修改:

serializer = CategorySerializer(category, context={'request': request})
return Response(serializer.data, status=status.HTTP_200_OK)

增加一个context,其中的request值就是该次请求的request,如果使用APIView的方式,那么只需要在方法中加入request参数就可以获取到了,如下:

class GetCategoryView(APIView):
    def get(self, request):
        category = Category.objects.all().first()
        if category:
            serializer = CategorySerializer(category, context={'request': request})
            return Response(serializer.data, status=status.HTTP_200_OK)

这样返回的图片地址就是url的格式了

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190776.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Switching regulator forms constant-current source

    Switching regulator forms constant-current source

    2021年9月2日
    67
  • java jce配置_java JCE 不限密钥长度解决办法

    java jce配置_java JCE 不限密钥长度解决办法()转自http://opensourceforgeeks.blogspot.com/2014/09/how-to-install-java-cryptography.html另外,在StackOverflow上也有相关讨论,并提供了反射实现代码https://stackoverflow.com/questions/25959948/local-policy-jar-and-us-export-p…

    2022年6月18日
    50
  • Linux 配置IP地址和DNS[通俗易懂]

    Linux 配置IP地址和DNS[通俗易懂]一.配置IP地址1、找出网卡名称终端上输入ifconfig(或者ipaddr),这里的网卡名是eth0。可以看到详细的网卡信息,包括网卡类型(以太网网卡),硬件地址,IP地址,IP广播地址,子网掩码等。我们要注意两个内容,第一:inetaddr:xxx.xxx.xxx.xxx(这是IPV4地址)inet6addr:xxxxxxxxxxxxxxx(这是IPV6地址),第二我们要注意mask后面的内容:xxx.xxx.xxx.xxx这是子网掩码。2、进入配置目录,找出对应网卡配置文

    2022年5月2日
    76
  • Android Toast的立即取消与显示「建议收藏」

    Android Toast的立即取消与显示「建议收藏」我们很多时候要用到Toast来提示消息或者输出内容,但是比较让人烦恼的是Toast它有一定的显示时间,虽然我们可以设置显示时长,但要达到立即消失的目的,还是要用到Cancel方法,下面就介绍一下它使用中的注意要点。在显示消息的时候,最好用变量来实现比较好控制。Toastmtoast;if(mtoast!=null){  mtoast.cancel();//注销之前显示的那条信息  mtoas…

    2022年9月12日
    1
  • intellij和pycharm_idea激活成功教程步骤

    intellij和pycharm_idea激活成功教程步骤写在最前:    可以的话,请购买产品,支持创作成果。因为IntelliJIDEA和Pycharm这一系列产品对于学生和老师都是forfree,所以,有教育邮箱的可以用邮箱认证,一年验证一次。下面是讲解激活成功教程方法了(针对2018版本系列产品):到官网下载你想要的IDE,这里用PyCharm为例,将鼠标移到PyCharm位置,会有Download按钮显示出来,点击,…

    2022年8月28日
    5
  • java打印当前日期

    java打印当前日期

    2021年7月16日
    76

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号