首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django中,whitenoise不显示静态文件?

在Django中,whitenoise不显示静态文件?
EN

Stack Overflow用户
提问于 2021-09-06 15:55:14
回答 2查看 2.9K关注 0票数 1

我试图显示静态文件,而debug=false.I正在使用whitenoise库,但网站仍然不显示静态文件和媒体文件。我的settings.py文件如下:

代码语言:javascript
复制
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

STATIC_URL = '/static/'
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [

    os.path.join(BASE_DIR, "static")
]


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


LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

Urls.py:

代码语言:javascript
复制
urlpatterns = [
    path('admin/', admin.site.urls),
   path('',include('games.urls')),
  path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
    path('sentry-debug/', trigger_error),
    path('ajax_calls/search/', autocompleteModel),
   path('accounts/', include('allauth.urls')),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-06 16:20:32

您收集静态文件夹了吗?

代码语言:javascript
复制
python manage.py collectstatic

在您的主要项目中,urls.py

代码语言:javascript
复制
 url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
    url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
]
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
票数 3
EN

Stack Overflow用户

发布于 2021-09-06 16:40:26

与django一起使用WhiteNoise 的 :

  1. 确保静态文件配置正确

在项目settings.py文件集中

STATIC_ROOT = BASE_DIR / ' staticfiles‘这个静态文件文件夹将是collectstatic提取所有静态文件的文件夹。

  1. 始终在settings.py中启用WhiteNoise: 中间件= 'django.middleware.security.SecurityMiddleware',‘Whitenoise.medileware,WhiteNoise中间件’,#.

NB : -- WhiteNoise middleware应该直接放在Django SecurityMiddleware之后(如果您正在使用它),并且放在所有其他中间件之前。

仅此而已,但如果您希望获得更高的性能,您应该启用如下所示的缓存和压缩支持:

代码语言:javascript
复制
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

如果希望应用压缩,但不想使用缓存行为,则可以使用:

代码语言:javascript
复制
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

按照这些步骤,一切都会好起来的。WhiteNoise文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69077368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档