Python Django ImageField上载到路径
我无法理解和使用Django的ImageField 我有一个模型:Python Django ImageField上载到路径,python,django,Python,Django,我无法理解和使用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_proje
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对象。为“图像”字段选择图像后,该图像具有临时名称。但是,保存此对象后,在上载路径指定的文件夹中找不到图像
正确的方法是什么?您应该使用媒体路径,而不是静态路径。请参见您的图像将上载到
媒体
文件夹,因此最好更改模型中的路径,如图像
,它们将上载到媒体/图像
在settings.py
中添加此
MEDIA\u URL='/MEDIA/'MEDIA\u ROOT=os.path.join(BASE\u 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 %}
{%for\u对象%中的img}
{%endfor%}
中的静态
上传到
没有意义,因为用户上传的图像会进入媒体/
文件夹。。您需要这些:
image = models.ImageField(upload_to='blog/%Y/%m/%d')
所有图像均在:
media/blog/2016/01/02/img_name.jpg
您可以通过以下方式在模板中访问它:
<img src="{{ blog.image.url }}">
谢谢我明白了。图像位于media文件夹中。为了在开发模式中使用,请将此代码添加到main URL.py from django.conf导入设置from django.conf.urls.static导入静态urlpatterns=[#……URLconf的其余部分放在这里…]+static(settings.media_URL,document_root=settings.media_root)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')