Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ImageField上载到路径_Python_Django - Fatal编程技术网

Python 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

我无法理解和使用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对象。为“图像”字段选择图像后,该图像具有临时名称。但是,保存此对象后,在上载路径指定的文件夹中找不到图像


正确的方法是什么?

您应该使用媒体路径,而不是静态路径。请参见

您的图像将上载到
媒体
文件夹,因此最好更改模型中的路径,如
图像
,它们将上载到
媒体/图像

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')