如何在Django的settings.py中配置函数生成Froala编辑器图片上传路径?
你目前的写法是直接将路径生成函数对象转为字符串拼接,得到的路径会携带函数对象的内存地址等无效内容,自然无法生成正确的存储路径。正确配置步骤如下:
1. 修正settings.py配置
先配置基础的媒体文件存储规则,Froala的全局上传路径留空即可,动态路径交给模型字段处理:
# settings.py import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent # 媒体文件基础配置 MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_URL = '/media/' # Froala 全局上传路径直接留空 FROALA_UPLOAD_PATH = ''
2. 在模型字段中绑定路径生成函数
你写的article_img_directory_path属于Django标准的upload_to回调函数,需要绑定到对应Froala字段的upload_to参数上,无需在settings中配置:
# articles/models.py from django.db import models from froala_editor.fields import FroalaField from .utilities import article_img_directory_path class Article(models.Model): title = models.CharField(max_length=255) # 给FroalaField指定upload_to参数 content = FroalaField( upload_to=article_img_directory_path ) # 其他字段...
3. 配置媒体文件访问路由(开发环境生效)
在项目根urls.py中添加媒体文件访问规则,确保上传的图片可以正常加载:
# 项目根目录urls.py from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 你的其他路由配置 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
配置完成后,上传的图片会自动按照media/images/文章别名/文件名的规则存储,完全符合需求。
内容的提问来源于stack exchange,提问作者ilsurealism
相关产品推荐
相关产品推荐

