如何在 django 中添加一个函数来创建指向 os.path.join(BASE_DIR, 'media/') 的链接 settings.py?



我使用froala编辑器向模型添加文本,并且我想更改将从表单字段加载图像的文件夹。创建路径的函数如下所示:

#utilities.py
def article_img_directory_path(instance, filename):
article_title = slugify(instance.title, allow_unicode=True)
return 'images/{0}/{1}'.format(article_title, filename)

我不知道如何正确地将这个函数添加到编辑器的路径中:

#settings.py
from articles.utilities import article_img_directory_path
FROALA_UPLOAD_PATH = os.path.join(BASE_DIR, 'media/')+str(article_img_directory_path)

图片被加载并显示,但结果是加载路径错误

我没有评论的声誉,但是看看你是否使用你的模型来保存这些文件?

如果是的,

在你的模型中使用FileField的upload_to属性,并将它指向article_img_directory_path,然后,你所有的文件将自动保存在你想要的位置。

如果没有,

我不太明白你想要达到什么目的,但是os.path。Join (base_dir, 'media/')返回媒体文件夹的字符串路径。

您试图在这里连接函数的绑定方法,甚至没有使用()调用函数。你需要通过调用函数并传递参数来调用函数。但我怀疑它是否能在settings.py中工作,因为你不能访问任何实例。

是这样,我建议你看看这里的FileField和upload_to https://docs.djangoproject.com/en/3.2/ref/models/fields/: ~:文本= def % 20 user_directory_path(例如% 2 c % 20文件名)% % 0 a % 3 20% 20% 20% 20% 23% 20文件% 20 % 20将% 20上传% 20 % 20 media_root/user_ % 3 cid % 3 e/% 3 cfilename % 3 e % 0 a % 20% 20% 20% 20返回% 27 user_ 20% % 7 b0 % 7 d/% 7 b1 % 7 d % 27.格式(instance.user.id % 2 c % 20文件名)% 0 a % 0 aclass % 20 mymodel 3 (models.Model) % % 0 a % 20上传% 20% 20% 20% 20% 3 d % 20 models.filefield (upload_to % 3 duser_directory_path)

最新更新