【问题标题】:How to return array of urls in django如何在 django 中返回 url 数组
【发布时间】:2020-11-06 23:14:36
【问题描述】:

目录中有一些文件,我想返回目录中每个文件的url。我如何在 django 中做到这一点?

dir_id_1
-->img1.png
-->img2.png
-->img3.png
dir_id_2
-->img4.png

当用户向与目录名称对应的端点发送 get 请求时,它应该返回图像的 url。像这样。

[10.10.10.10:8000/.../dir_id_1/img1.png, 10.10.10.10:8000/.../dir_id_1/img2.png, 10.10.10.10:8000/.../dir_id_1/img2.png]

PS:我将这些图像保存在文件系统中,而不是数据库中。

【问题讨论】:

  • 在解决问题而不是问题本身的解决方案时询问您卡在哪里很好。尝试自己,如果您遇到任何特定问题,请更新相同的问题。

标签: django django-urls


【解决方案1】:

您可以使用这样的语法读取存储图像的整个文件和目录,然后您可以映射条目并使用图像的 URL 模式编辑它们

import os
entries = os.listdir('[directory_name]/')

【讨论】:

    【解决方案2】:

    如果您将图像保存在服务器上的某个目录中,则可以通过它们在域中的路径获取它们

    from django.contrib.sites.models import Site
    from os import listdir
    from os.path import isfile
    
    path_name = "your/dir/path/name"
    
    def get_urls_in_dir(pathname):
        hostname = Site.objects.get_current().domain
        file_urls = []
        for file in listdir(path_name):
            file_urls.append(hostname + "/" + pathname + "/" + file)
        return file_urls
    

    你会得到类似的东西

    [
        'example.com/dir_id_1/img1.png',
        'example.com/dir_id_1/img2.png',
        'example.com/dir_id_1/img3.png',
    ]
    
    

    但这不是好办法

    如果您使用 Django,最好将 ImageField()MEDIA_URL 一起使用,这会将图像保存在您将在 MEDIA_URL 中指定的目录中,并且仅将 图像路径 存储在您的数据库中。通过采用这种方法,您可以通过

    获得所需的图像
    image_object.url
    

    Here 是配置MEDIA_URL 的好例子

    【讨论】:

      猜你喜欢
      • 2021-09-11
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多