【问题标题】:How can see where my site is looking for css and media如何查看我的网站在哪里寻找 CSS 和媒体
【发布时间】:2020-05-10 12:30:07
【问题描述】:

我已经在我的网站上实现了 wagtail,当我将它投入生产时,它没有找到 css 或任何图像。我跑了

python manage.py collectstatic

我所有的 css 都在一个名为 static_files 的目录中,与 manage.py 位于同一目录中。

base.py 我有:

PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
....
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

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

在我的开发站点 BASE_DIR 是带有 static_files 的目录,但它似乎没有在生产站点上找到它。

我有什么方法可以测试以查看生产版本在哪里寻找 css,例如在 HTML 中?

[编辑] 我查看了question 的答案,但它并没有解决我的问题的核心,即当 DEBUG 设置为 False 时某些基本代码没有被调用

【问题讨论】:

标签: css python-3.x wagtail


【解决方案1】:

您需要在项目目录的urls.py中包含以下代码:

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

由于某种原因,它位于以下 if 部分中:

if setting.DEBUG = True

我将 DEBUG 设置为 False。如果我将它移动到模块的主体,它可以完美地工作

【讨论】:

    【解决方案2】:

    在模板中引用静态资源时,请务必使用{% static ... %} 模板标签(reference)。在模板中对媒体文件的引用中,请务必以{% get_media_prefix %} (reference) 为前缀。此外,我通常对STATIC_URLSTATIC_ROOT 使用相同的最终指示符(即/static/,而不是/static/ 用于另一个,static_files 用于另一个)。以下是我声明这些变量的方式:

    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, STATIC_URL.replace('/', ''))
    
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, MEDIA_URL.replace('/', ''))
    

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 1970-01-01
      • 2018-06-24
      • 2021-09-29
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2012-07-04
      相关资源
      最近更新 更多