我正在使用 Django 的 Summernote 插件,我的目标是允许用户在服务器内上传媒体。目前,文件(默认情况下)组织在以上传日期命名的文件夹中。比如:
是否可以更改路径并在路径中包含 user_id ? 类似的东西
我做了什么
我在
settings.py
文件中进行了这些编辑
# Summernote plugin
def summernote_upload_to(request, filename):
user = request.user
# Create the dynamic path
upload_path = f'user_upload/{user}'
return os.path.join(upload_path)
SUMMERNOTE_CONFIG = {
'attachment_upload_to': summernote_upload_to,
'summernote': {
'attachment_filesize_limit': 200 * 1000 * 1000, # specify the file size
'width': '100%',
'height': '480',
}
}
但是,当我上传图像时,出现错误
属性错误:“附件”对象没有属性“用户”
我了解您想要自定义 Summernote 的上传路径以包含用户 ID 而不是日期。发生错误的原因是 Attachment_upload_to 函数收到的参数与您期望的不同。让我帮你解决这个问题。 您可以按照以下步骤来解决问题
1.创建包含用户信息的自定义附件模型 2.修改上传路径包含用户ID 3.确保文件上传过程中用户信息可用 4.维护基于UUID的文件名的唯一性 5.为匿名上传提供后备
文件现在将保存在以下路径中:
项目名称/media/django-summernote/User100/uuid-filename.png 项目名称/media/django-summernote/User200/uuid-filename.jpg
如果您在已上传文件的项目中实现此操作,请记住仔细处理任何现有文件和迁移。
如果需要任何代码片段,请联系我;我将提供详细的代码,但我保证上面的代码将有效,因为它适用于我的域!