Python Django 2.2 img&x27;没有装货

Python Django 2.2 img&x27;没有装货,python,django,image,file,Python,Django,Image,File,实际上,我是django的新手,在加载图像时发现了一个问题,我按照文档中的说明进行了设置,并将图像保存到正确的文件夹中。只是加载部分不工作,因为我希望它 # the settings.py STATIC_URL = '/static/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' # the Model class Legend(models.Model): name = models.C

实际上,我是django的新手,在加载图像时发现了一个问题,我按照文档中的说明进行了设置,并将图像保存到正确的文件夹中。只是加载部分不工作,因为我希望它

# the settings.py
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

# the Model
class Legend(models.Model):
        name = models.CharField(max_length=100)
        description = models.CharField(max_length=300)
        creator = models.ForeignKey(User, on_delete=models.CASCADE)
        created = models.DateTimeField(auto_now=True)
        published = models.DateTimeField(null=True, blank=True)
        available = models.BooleanField(default=False)
        image = models.ImageField(upload_to='gallery', blank=True, null=True)

# the template where i use the img field
{% for instance in object_list %}
    <img style="width: 245px; height: 247px;" src="{{ instance.image.url }}" alt="legend image"">    
{% endfor %}
#settings.py
静态URL='/STATIC/'
MEDIA\u ROOT=os.path.join(基本目录'MEDIA')
媒体URL='/MEDIA/'
#模型
类图例(models.Model):
name=models.CharField(最大长度=100)
description=models.CharField(最大长度=300)
creator=models.ForeignKey(用户,on_delete=models.CASCADE)
created=models.DateTimeField(auto\u now=True)
published=models.DateTimeField(null=True,blank=True)
available=models.BooleanField(默认值=False)
image=models.ImageField(上传到='gallery',blank=True,null=True)
#使用img字段的模板
{%例如在对象\列表%}
{%endfor%}
上载正在按预期工作。将所有图像保存到媒体文件夹(位于applevel上) 所以:media/gallery/name.jpg。 运行服务器时不会显示映像,但源代码似乎没有问题:

调试时在本地提供文件似乎有问题,但我所能找到的都是较旧的django版本。Iam使用django——版本2.2


非常感谢您的帮助

当您在
DEBUG=True
下运行django时,您还应该添加媒体URL:

将此添加到主
url.py的末尾:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    # and this one to serve static files:
    #urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

您是否在settings.py中设置了
STATICFILES\u DIRS
?您是否在URL.py中添加了
+static(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
?不,我没有设置STATICFILES\u DIRS,为什么需要?django不是在寻找媒体根和媒体字符串吗?谢谢,这很有效。但我不明白为什么这是必要的?在生产中,我是否需要做类似的smth,以便在部署时为图像提供服务?@Amnesie在开发中,因为您使用的是django的最小服务器,您需要添加它,以便为您的用户上传的文件提供服务。但在生产中不需要这样做,因为web服务器会处理这些问题。此外,在django 2.1中,您不再需要该
if设置。DEBUG
,因为django将自动检查该设置。@Amnesie还请将答案标记为已接受,以便其他人以后可以引用它。