码迷,mamicode.com
首页 > 其他好文 > 详细

Django DEBUG=False后静态文件加载失败

时间:2021-07-02 15:53:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:static   lse   解决   you   还原   环境   man   go import   页面   

我的环境是:Django2.2 + Python3.7
Q1 将Django的DEBUG设置为False后,静态文件加载失败:报404
原因:Django的DEBUG设置为True,表示项目以调试方式运行,这种模式下程序出错后会在前端页面和后台报出对应错误,并且Django会自动搜索静态文件。设置DEBUG=False后,Django不会自动搜索静态文件,此时需要在ALLOWED_HOSTS里面添加程序所在的机器ip才能正常访问,并且Django会认为当前环境是生产环境,不在代理静态文件,自然也不会去搜索静态文件,程序运行需要加载静态文件时便会报404。
解决方法:给静态文件设置路由以便于程序根据路由搜索静态文件。
1.在将DEBUG设置为False后,首先需要将程序所在机器的ip加入ALLOWED_HOSTS。

# SECURITY WARNING: don‘t run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ["your_ip"]

2.在工程settings.py中设置静态文件路径,Django2.2下设置了STATIC_ROOT名字为static后,STATICFILES_DIRS中就不能再包含STATIC_ROOT的路径。

STATIC_URL = ‘/static/‘
STATIC_ROOT = os.path.join(BASE_DIR, ‘static‘) # 新增
# STATICFILES_DIRS = [
#     os.path.join(BASE_DIR, ‘static‘)
# ]

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

3.在urls.py中导入设置路由需要的模块并设置url路由。testDjango是创建的Django工程名。

from testDjango import settings 
from django.views import static
from django.conf.urls import url

urlpatterns = [
    url(r‘^static/(?P<path>.*)$‘, static.serve, {‘document_root‘: settings.STATIC_ROOT}, name=‘static‘),
    url(r‘^media/(?P<path>.*)$‘, static.serve, {‘document_root‘: settings.MEDIA_ROOT}, name=‘media‘)
]

经过上面的设置后访问管理控制台xadmin页面会发现管理页面的静态文件加载失败,此时为了方便开发有两种处理方式:
1.将配置还原。
2.启动Django自带的服务时加上 --insecure

python3 manage.py runserver 0.0.0.0:8000 --insecure

Django DEBUG=False后静态文件加载失败

标签:static   lse   解决   you   还原   环境   man   go import   页面   

原文地址:https://www.cnblogs.com/dyfblogs/p/14961351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!