图像未显示在 Django 1.8 模板中

Image not displaying in Django 1.8 template

我想在名为 index 的 Django 应用程序中显示静态文件夹中的图像。但它在浏览器中显示图标,这意味着它无法在 <img src=""/> 中指定的路径中找到图像。这是我的目录结构:

|-- db.sqlite3
|-- images
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
|-- index
|   |-- admin.py
|   |-- admin.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- migrations
|   |   |-- __init__.py
|   |   `-- __init__.pyc
|   |-- models.py
|   |-- models.pyc
|   |-- static
|   |   `-- index
|   |       `-- file2
|   |-- templates
|   |   `-- show.html
|   |-- tests.py
|   |-- urls.py
|   |-- urls.pyc
|   |-- views.py
|   `-- views.pyc
`-- manage.py

views.py

def show(request):
    return render(request, 'show.html', {})

urls.py

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

from index import views

urlpatterns = [
    url(r'^show$', views.show),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

show.html

{% load staticfiles %}
<img src="{% static "index/file2" %}" alt="test_image"/>

我曾尝试遵循 this 但显然没有做到正确。任何帮助将不胜感激。

我设置了STATIC_ROOT = 'static',它现在在网页上显示图像。

经过多次尝试,最后我结合了Whosebug的答案得到了它。真的,这并不简单。呸!不过我很开心,也笑了。 我已经在 Windows 上使用 Apache 和 mod_wsgi (Xampp) 安装了 Django 1.8。 'vrsite' 是我的网站。 'vrapp' 是我的应用程序。最终显示的图像来自 vrsite> vrsite > vrapp > static > vrapp >23-oracle.jpg 我获取显示图像的步骤如下: 1、目录结构: C:...\myvirtualwebenv27_1\xampp\htdocs\vrsite\manage.py <---root

vrsite

  -- manage.py
  -- static
          --media
  -- static_dirs
          -- css
          -- img
                -- 23-oracle.jpg
          -- js
  -- static_root
          -- admin
               -- css
               -- img
               -- js
          -- css
          -- img
                -- 23-oracle.jpg
          -- vrapp
                 --23-oracle.jpg
  -- vrsite
          -- __init__.py
          -- settings.py
          -- urls.py
          -- wsgi.py
          -- vrapp
                 -- migrations
                 -- static
                         -- vrapp
                                -- 23-oracle.jpg

                 -- templates
                         -- index.html
                 -- __init.py__
                 -- admin.py
                 -- models.py
                 -- tests.py
                 -- views.py

2。 settings.py

import os

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

INSTALLED_APPS = (
'django.contrib.staticfiles',
    'vrsite.vrapp',
)

ROOT_URLCONF = 'vrsite.urls'

WSGI_APPLICATION = 'vrsite.wsgi.application'

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root')
#STATIC_ROOT = 'static'

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

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

MEDIA_URL = '/media/'
  1. urls.py

    从 django.conf.urls 导入模式,包括 url

    from django.contrib import admin
    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        url(r'^$', 'vrsite.vrapp.views.home'),
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    
  2. views.py

    从django.shortcuts导入渲染

    从django.shortcuts导入render_to_response

    def home(request):
    
            return render_to_response('index.html')
    
  3. index.html

<正文>

{% load staticfiles %}

<img src="{% static "vrapp/23-oracle.jpg" %}" alt = "My image"/>

< /正文>

  1. 运行收集静态如下

    (myvirtualwebenv27_1) C:...\myvirtualwebenv27_1\xampp\htdocs\vrsite> C:...\myvirtualwebenv27_1\Scripts\python manage.py collectstatic

    您已请求在目的地收集静态文件 在您的设置中指定的位置:

    C:\...\myvirtualwebenv27_1\xampp\htdocs\vrsite\static\static_root
    

    这将覆盖现有文件! 您确定要执行此操作吗?

    键入 'yes' 继续,或键入 'no' 取消:是 正在复制 C:...\myvirtualwebenv27_1\xampp\htdocs\vrsite\vrsite\vrapp\static\vrapp\23-oracle.jpg'

    1个静态文件复制到'C:...\myvirtualwebenv27_1\xampp\htdocs\vrsite\static\static_root',64未修改。