首先,我用的是django4.2,python3.10版本
本来,如果在settings.py中使用 DEBUG = True,那么什么问题也没有,当然,这属于调试模式。
DEBUG = True
TEMPLATE_DEBUG = DEBUG
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static").replace('\\', '/')
]
一切正常.....
但是,当我准备提交代码时,将 DEBUG 改为 False 时.....
DEBUG = False
TEMPLATE_DEBUG = DEBUG
好好的admin界面,变成了这样....
而且,好好的静态资源,也没法访问了:
郁闷啊.....
网上的帖子,关于这方面的也比较多....
我看的是这一篇:彻底解决:django设置DEBUG=false时导致静态文件丢失问题_云霄IT的博客-CSDN博客
实践一下吧...
DEBUG = False
TEMPLATE_DEBUG = DEBUG
# STATIC_URL = '/static/'
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static").replace('\\', '/')
# ]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
再urls.py中添加点东西:
from django.urls import path, include, re_path
from django.views import static
from django.conf import settings
from . import siteconfig as siteconfig
urlpatterns = [
re_path(r'^js/(?P<path>.*)$', static.serve,
{'document_root': siteconfig.JS_DIR}),
re_path(r'^css/(?P<path>.*)$', static.serve,
{'document_root': siteconfig.CSS_DIR}),
re_path(r'^images/(?P<path>.*)$', static.serve,
{'document_root': siteconfig.IMAGE_DIR}),
re_path(r"^static/(?P<path>.*)$", static.serve,
{"document_root": settings.STATIC_ROOT}, name='static'),
]
然后,就变成了这样....
好吧....静态资源确实能访问了.....但是.....他喵的,admin界面都没了....就没了....就他喵的,没了....
好痛苦啊.....
这个时候,想着有没有一种可能,DEBUG = True 的时候,settings.py 那几项,不用注释掉,大家共存下,可好?
DEBUG = False
TEMPLATE_DEBUG = DEBUG
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static").replace('\\', '/')
]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
结果,好像,不太好....
django不让搞共存啊....
最后,突然发现....错误只说 STATICFILES_DIRS 不准和 STATIC_ROOT 共存,没说 STATIC_URL 不让共存啊....
那这样呢....
DEBUG = False
TEMPLATE_DEBUG = DEBUG
STATIC_URL = '/static/'
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static").replace('\\', '/')
# ]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
于是乎....
啥都好了....哎....
好吧,特此记录吧....网上的帖子不是说就是错的....只是说,对于Django4.2.3,python3.10这个搭档来说,其实主要还是对 django4.2 这个曾新瓦亮的版本来说,是真的行不通啊.....千万别干掉 STATIC_URL 参数....有它在就是晴天啊....