gpt4 book ai didi

python - Django:如何阻止 Django 更改文件名(例如将空格转换为 _ )?

转载 作者:行者123 更新时间:2023-12-01 04:09:42 46 4
gpt4 key购买 nike

我正在开发一个小型 Django 项目,并且在 models.py 中有一个文件字段。一切工作正常,但我不喜欢 Django 在上传后编辑文件名。它将空格更改为下划线,并删除(方)括号和类似的内容。

有什么方法可以阻止 Django 这样做吗?我可以看到,这是为了让网站更安全、更有保障,同时也避免错误。但是,我是唯一一个能够上传文件的人。

希望有人知道这是否(以及如何)可能:)

谢谢!

编辑:

这是 models.py 中的 FileField:

file = models.FileField(upload_to=file_path)

这是我的 upload_to:

def file_path(instance, filename):
extension = filename.split('.')[-1]
new_filename = '%s - %s.%s' % (str(instance.model.object_number), str(instance.model.object_name), str(extension))
return '/'.join(['files', str(instance.model.object_theme), str(instance.model.object_number), new_filename])

最佳答案

是的,您可以编写自己的 upload_to 函数,如文档中所述:https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.FileField.upload_to

def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
upload = models.FileField(upload_to=user_directory_path)

如果您想避免覆盖具有相同名称的文件,则必须重新添加该功能。默认存储使用此函数django.core.file.storage.get_availble_name()您可以阅读source code on github

编辑:您的 upload_to 函数似乎没有返回任何内容。它应该以字符串形式返回路径名。

import os
def file_path(instance, filename):
base, extension = os.path.splitext(filename)
return '{model.object_number} - {model.object_name}{extension}'.format(
model=instance.model, extension=extension)

关于python - Django:如何阻止 Django 更改文件名(例如将空格转换为 _ )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116028/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com