解决:django设置DEBUG=false时出现的问题

首先,我用的是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('\\', '/')
]

解决:django设置DEBUG=false时出现的问题_第1张图片

解决:django设置DEBUG=false时出现的问题_第2张图片 

一切正常.....

但是,当我准备提交代码时,将 DEBUG 改为 False 时.....

DEBUG = False
TEMPLATE_DEBUG = DEBUG

好好的admin界面,变成了这样....

解决:django设置DEBUG=false时出现的问题_第3张图片

而且,好好的静态资源,也没法访问了:

解决:django设置DEBUG=false时出现的问题_第4张图片 

 郁闷啊.....

网上的帖子,关于这方面的也比较多....

我看的是这一篇:彻底解决: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.*)$', static.serve,
            {'document_root': siteconfig.JS_DIR}),
    re_path(r'^css/(?P.*)$', static.serve,
            {'document_root': siteconfig.CSS_DIR}),
    re_path(r'^images/(?P.*)$', static.serve,
            {'document_root': siteconfig.IMAGE_DIR}),
    re_path(r"^static/(?P.*)$", static.serve,
            {"document_root": settings.STATIC_ROOT}, name='static'),
]

然后,就变成了这样....

解决:django设置DEBUG=false时出现的问题_第5张图片

好吧....静态资源确实能访问了.....但是.....他喵的,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设置DEBUG=false时出现的问题_第6张图片

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")

于是乎....

解决:django设置DEBUG=false时出现的问题_第7张图片

解决:django设置DEBUG=false时出现的问题_第8张图片 

啥都好了....哎....

好吧,特此记录吧....网上的帖子不是说就是错的....只是说,对于Django4.2.3,python3.10这个搭档来说,其实主要还是对 django4.2 这个曾新瓦亮的版本来说,是真的行不通啊.....千万别干掉 STATIC_URL 参数....有它在就是晴天啊.... 

你可能感兴趣的:(django,python,后端)