程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了提供 SVG 静态文件的 Django/DRF 端点大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决提供 SVG 静态文件的 Django/DRF 端点?

开发过程中遇到提供 SVG 静态文件的 Django/DRF 端点的问题如何解决?下面主要结合日常开发的经验,给出你关于提供 SVG 静态文件的 Django/DRF 端点的解决方法建议,希望对你解决提供 SVG 静态文件的 Django/DRF 端点有所启发或帮助;

我正在使用 Django 和 Django Rest Framework 构建 API。我一直在构建一个端点来提供一组 SVG 文件(一些有趣的表情符号:P)。

这些 SVG 文件未存储在数据库中(因此我没有为它们提供 Django Model),而是将它们存储在项目的 static 文件夹中,其中它们有自己的子文件夹:

 | project
 | + static
 | | + assets
 | | | + emojis
 | | | | | smile.svg
 | | | | | laugh.svg
 | | | | | etc...

我尝试了不同的方法,但我不确定。 一种是以下观点:

# Python
from os import Listdir
from os.path import isfile,join
# Django
from django.@R_450_10107@ import @R_450_10107@Response


def List_emojis(request):

    emojis_path = 'project/static/assets/emojis/'

    emojis = [f for f in Listdir(emojis_path) if isfile(join(emojis_path,f))]
    ret = []
    for emoji in emojis:
        ret.append(open(emojis_path+emoji,'r'))
    return @R_450_10107@Response(ret,content_type='multipart/form-data')

这将返回一个下载的二进制文件(当我使用浏览器访问 URL 时),如下所示:

<_io.TextIOWrapper name='project/static/assets/emojis/094-user.svg' mode='r' enCoding='UTF-8'><_io.TextIOWrapper name='project/static/assets/emojis/059-sad-11.svg' mode='r' enCoding='UTF-8'><_io.TextIOWrapper name='project/static/assets/emojis/006-shooTing-star.svg' mode='r' enCoding='UTF-8'><_io.TextIOWrapper name='project/static/assets/emojis/120-brIEfcase.svg' mode='r' enCoding='UTF-8'><_io.TextIOWrapper name='project/static/assets/emojis/016-monkey.svg' mode='r' enCoding='UTF-8'><_io.TextIOWrapper name='project/static/assets/emojis/185-tongue.svg' mode='r' enCoding='UTF-8'>

我以前从未从 API 返回过文件。 Django Rest Framework 的正确方法是什么?虑到这些几乎是 200 个 SVG(每个 4kb)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的提供 SVG 静态文件的 Django/DRF 端点全部内容,希望文章能够帮你解决提供 SVG 静态文件的 Django/DRF 端点所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:提供端点