在 Django 中,whitenoise 不显示静态文件?
In Django, whitenoise do not show static files?
我试图在 debug=false
时显示静态文件。我正在使用 whitenoise 库,但网站仍然不显示静态文件和媒体文件。我的 settings.py 文件是这样的:
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:
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)
你收集静态文件夹了吗
python manage.py collectstatic
在你的主要项目中urls.py
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)
要将 WhiteNoise
与 django 一起使用:
- 确保静态文件配置正确
在项目settings.py
文件中设置
STATIC_ROOT = BASE_DIR / 'staticfiles'
此 staticfiles 文件夹将是 collectstatic
将提取所有静态文件的文件夹。
启用白噪声
总是在 settings.py
:
中间件 = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...
]
注意: WhiteNoise middleware
应该直接放在 Django SecurityMiddleware
之后(如果您正在使用它)和所有其他中间件之前。
就是这样,但是如果您想要更高的性能,您应该像这样启用缓存和压缩支持:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
如果你想应用压缩但不想要缓存行为,那么你可以使用:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
按照这些步骤,一切都会好的。 WhiteNoise Documentation
我试图在 debug=false
时显示静态文件。我正在使用 whitenoise 库,但网站仍然不显示静态文件和媒体文件。我的 settings.py 文件是这样的:
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:
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)
你收集静态文件夹了吗
python manage.py collectstatic
在你的主要项目中urls.py
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)
要将 WhiteNoise
与 django 一起使用:
- 确保静态文件配置正确
在项目settings.py
文件中设置
STATIC_ROOT = BASE_DIR / 'staticfiles'
此 staticfiles 文件夹将是 collectstatic
将提取所有静态文件的文件夹。
启用白噪声 总是在
settings.py
:中间件 = [
'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', # ...
]
注意: WhiteNoise middleware
应该直接放在 Django SecurityMiddleware
之后(如果您正在使用它)和所有其他中间件之前。
就是这样,但是如果您想要更高的性能,您应该像这样启用缓存和压缩支持:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
如果你想应用压缩但不想要缓存行为,那么你可以使用:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
按照这些步骤,一切都会好的。 WhiteNoise Documentation