首先,我用的是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 参数....有它在就是晴天啊....
关于,DEBUG=False,其实还有一个问题....
就是现在简单的admin正常了,那是因为,我的服务本身就是自定义了admin界面,所以,这样改以后没问题了,但是,django,会有许多三方包配有静态文件,这样以来....好吧...
调试模式的时候是这样的:
DEBUG=False的时候,是这样的....
郁闷的啊...rest_framework模块就成了这球样子了.....
然后就是一堆报错:
所以 ,就是说,还需要将rest_framework模块里的static文件也得搞出来,放到我们给的static_root路径下才行....
手动copy Paste,迁过来可以....我就是这么干的....问题也被解决了...
但是,在网上找了找....我靠,django本身自带这种操作啊...一条命令就搞定了....文章来源:https://www.toymoban.com/news/detail-642310.html
python3 manage.py collectstatic
django 会把所有的 static 文件都复制到 STATIC_ROOT 文件夹下....一劳永逸啊....文章来源地址https://www.toymoban.com/news/detail-642310.html
到了这里,关于解决:django设置DEBUG=false时出现的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!