Python Django 2.2 img&x27;没有装货
实际上,我是django的新手,在加载图像时发现了一个问题,我按照文档中的说明进行了设置,并将图像保存到正确的文件夹中。只是加载部分不工作,因为我希望它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
# 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还请将答案标记为已接受,以便其他人以后可以引用它。