小编典典

Django ImageField upload_to路径

python

我在理解和使用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路径指定的文件夹中找到该图像。

正确的方法是什么?


阅读 209

收藏
2020-12-20

共1个答案

小编典典

您的图片会上传到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 %}
2020-12-20