Django ImageField upload_to 路径

新手上路,请多包涵

我无法理解和使用 Django 的 ImageField。

我有一个模型:

 class BlogContent(models.Model):
    title = models.CharField(max_length=300)
    image = models.ImageField(upload_to='static/static_dirs/images/')
    description = models.TextField()

我的文件系统目前是:

 src
 |---main_project
 |---app_that_contains_blog_content_model
 |---static
       |---static_dirs
                |---images

当我运行服务器并转到管理页面时,我可以添加 BlogContent 对象。为图像字段选择图像后,图像有一个临时名称。但是,保存此对象后,我无法在 upload_to 路径指定的文件夹中找到图像。

这样做的正确方法是什么?

原文由 user3025403 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 648
2 个回答

您的图像将被上传到 media 文件夹,因此最好更改模型中的路径,例如 images/ ,它们将被上传到 media/images

settings.py 添加这个

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

url.py

 from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [....
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

然后,如果你想显示所有这些图像,请在 view.py 中使用类似的东西

BlogContent.objects.all()

并像这样渲染它:

 {% for img in your_object %}
    <img src="{{ img.image.url }}" >
{% endfor %}

原文由 Ivan Semochkin 发布,翻译遵循 CC BY-SA 4.0 许可协议

staticupload_to 没有意义,因为用户上传的图像进入 media/ 文件夹..你需要这些:

 image = models.ImageField(upload_to='blog/%Y/%m/%d')

所有图像都位于:

 media/blog/2016/01/02/img_name.jpg

您可以像这样在模板中访问它:

 <img src="{{ blog.image.url }}">

在设置中:

 import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

原文由 doniyor 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏