我可以强制Django加载文件名中带有空格的图像吗?

lnvxswe2  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(127)

我有一个包含图像文件的文件夹。不幸的是,有些文件的名称中包含一个空格。如果我在开发服务器上运行应用程序(通过python manage.py runserver),Django可以加载这些图像,但如果我在生产环境中运行它,则无法加载。原因是Django将" "转换为"%20"
例如,如果我的文件夹包含以下文件:

  • image1.png
  • image2 test.png
  • image3%20test.png (只是为了了解发生了什么)

.那么这段代码将得到以下结果:

# In settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = ('D:/Data/Images')

# In the HTML template
<img src="/media/image1.png"/> # image loads on the development and production server
<img src="/media/image2 test.png"/> # image loads only on the development server
<img src="/media/image3 test.png"/> # image loads only on the production server

字符串
我当然可以通过将空格替换为下划线来重命名所有包含空格字符的图像文件名。但这有点尴尬,因为化学分析系统不断向文件夹中输入新的图像文件,系统软件偶尔会在文件名中引入空格。我无法控制这一点。
那么有没有一种方法可以强制Django加载图像,即使它们包含空格字符?

owfi6suc

owfi6suc1#

这不是好的做法,但是,你可以使用自定义**FileSystemStorage**

custom_storage.py

from django.core.files.storage import FileSystemStorage

class CustomStorage(FileSystemStorage):
    def get_valid_name(self, name):
        return name  # No modification to the name

字符串
models.py

from django.db import models
from .custom_storage import CustomStorage  # Import the CustomStorage class

class YourModel(models.Model):
    image = models.ImageField(upload_to='images/', storage=CustomStorage())

相关问题