Django ImageField(图像不显示)

时间:2019-12-08 18:02:44

标签: python django

我正在尝试为管理员建立CMS,以便他可以更改图像。 但是到目前为止,它不起作用,我也找不到错误。

这是模型,没有default.png

models.py

class Media(models.Model):
    image = models.ImageField(blank=True, null=True)

    class Meta:
        verbose_name_plural = "Photo"

    def __str__(self):
        return self.image.name

settings.py

STATIC_URL = '/static/'


STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'assets'),
)

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

print(MEDIA_ROOT)

views.py

def gallery_view(request):
   return render(request, 'web/gallery.html', context={"pic": Media.objects.first()})

这是我的ImageField模板

<img class="ui bordered image" src="{{ pic.image.url }}">

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('webpage/', include('webpage.urls')),
    path('', include('web.urls')),
    path(r'^', include('web.urls', namespace='web')),
]


urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

现在,当我print(MEDIA_ROOT)的终端显示以下内容时:

'Not Found: /media/default.png'

"GET /media/default.png HTTP/1.1" 404 1808"

"POST /admin/web/media/add/ HTTP/1.1" 302 0"

"GET /admin/web/media/ HTTP/1.1" 200 1282"

有人对我有个建议吗? 预先感谢。

3 个答案:

答案 0 :(得分:0)

class Media(models.Model):
    image = models.ImageField(blank=True, null=True)

为您的模型提供默认值

image = models.Imagefield(blank =True, null=True, default ="add photo")

进行迁移并在添加默认值后进行迁移。

不确定观看次数

def gallery_view(request):
 if(request.method=='POST'):
    = request.POST['media']
   value = 'Medai : %s (media)
 return render(request, 'web/gallery.html', context={"pic": Media.objects.first()})

答案 1 :(得分:0)

再次检查是否在settings.py中同时添加了静态URL和媒体URL的路径。 对于静态网址:

STATIC_URL = '/static/'
STATIC_ROOT = 'staticfiles'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

对于媒体网址:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

要访问以显示您的img,

 <img class="border-radius-50 profile-img" src="{{ MEDIA_URL }}{{  pic.image.url }}" alt="...">

答案 2 :(得分:0)

我不了解default.png的来源,因为我没有设置参数。

谁能告诉我为什么?