【问题标题】:Django 1.8 Slider Image not displayingDjango 1.8 滑块图像不显示
【发布时间】:2015-12-16 14:45:09
【问题描述】:

在 Django 1.8 中,我可以上传图像并将它们保存在应有的路径上,但是当我将 <img src="{{ slider.Image.url }}" alt="Slider" /> 添加到模板时,图像不显示。如果我只想在 url 中看到像 http://127.0.0.1:8000/static/images/slider/1.jpg 这样的图像,图像确实会出现。但是当我转到主页 http://127.0.0.1:8000/home/ 时,它只会显示 alt。

这是我的目录树:

 - home
 - static
 - static/
         css
         images
               slider
         js

正确放置在滑块中的图像。 CSS 和 Js 工作正常。

这是我的设置文件

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'home'
)

STATIC_URL = '/static/'

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

MEDIA_URL = (
    'static/'
)

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

当我使用static_root 时,问题变得更加严重,没有任何效果。

这是我家中的滑块模型

class Slider(models.Model):
    ImageName = models.CharField(max_length=200)
    Image = models.ImageField(upload_to="images/slider")

这是我的主要网址

from django.conf.urls import include, url, patterns
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^home/', include('home.urls')),
]

from django.conf import settings
urlpatterns += patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),
)

这是我的主页应用网址

from django.conf.urls import url
from .import views


urlpatterns = [
    url(r'^$', views.slider, name='slider',)
]

这是我的模板源

{% for slider in sliders %}

    <li class="item"><img src="{{ slider.Image.url }}" alt="Slider" /><span class="overlay1"></span></li>

{% endfor %}

【问题讨论】:

  • {{ slider.Image.url }} 的值是多少?检查img 的来源并查看其价值。
  • 抱歉 PIP 没有安装。
  • 标签: python django image django-templates django-views


    【解决方案1】:

    您不应混合使用静态文件和媒体文件。静态文件是与您的应用一起打包的 CSS、JavaScript、图像和其他文件,因此它可以正常工作或看起来不错。

    媒体文件是从网站上传的文件,或者只是与数据库中某些对象相关联的文件。

    这些文件不应该混合在一起。

    另外,STATIC_ROOTSTATICFILES_DIRS 不应指向同一个目录。执行./manage.py collectstatic 时,每个应用内的STATICFILES_DIRSstatic 目录中的所有文件都将被复制或链接到STATIC_ROOT

    默认情况下,Django 开发服务器不会提供任何媒体文件,如果您希望提供任何媒体文件,请添加到您的主 urls.py 文件:

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    【讨论】:

    • Brother 一切正常,但图像未显示在模板源中。我现在正在尝试您的解决方案,但我已经尝试了所有 stackoverflow 答案。感谢重播。
    • 我已更改模型以将文件保存到 media/images 目录。但我也有同样的问题。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签