【问题标题】:Django doesn't show image with debug TrueDjango 不显示带有 debug True 的图像
【发布时间】:2015-12-02 16:47:10
【问题描述】:

通过这些设置,django 显示存储在应用程序的静态目录中的文件 404.png NeoRecApp if NeoRec if DEBUG=True,否则不显示如果 debug 设置为 false。

(设置STATIC_ROOT 后,我运行python manage.py collectstatic,将文件移动到新创建的“NeoRecApp/static”。)

settings.py

DEBUG = False
#DEBUG = True
ALLOWED_HOSTS = ["*"]
STATIC_URL = 'static/'
STATIC_ROOT = 'NeoRecApp/static/'
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'NeoRecApp',
)

urls.py

from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls.static import static
import settings

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

【问题讨论】:

  • 尝试使用NeoRecApp/static/404.png 访问图像。我通常将 NeoRecApp/static 包含到 STATICFILES_DIRS 设置中,并将我的 STATIC_URL 保持为 /static/ 。对我来说很好用(我在运行 collectstatic 后删除了 static.root
  • 不起作用。返回 404,这是我的自定义页面,没有图像。
  • 相同的结果。只有 NeoRecApp 会在 /static 之前添加。完整的 src 路径是“NeoRecApp/static/404.png”。此外,它超链接到“localhost:8000/NeoRecApp/static/404.png”。我没有向 NeoRecApp/* 声明任何 urlpattern。但我不明白这有什么帮助。

标签: python django


【解决方案1】:

我在阅读更多关于docs 的内容后发现 DEBUG 标志设置为运行 Django 的测试服务器。因此,如果 DEBUG=False,则 Django 的manage.py runserver 解决方案将不会提供静态文件,此后我们有两个选择-

  1. 在不同的服务器(Apache、Nginx 等)上部署
  2. 使用此模块 (White noise) 提供静态文件。

【讨论】:

    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2014-01-17
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多