标签: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
标签:static lse 解决 you 还原 环境 man go import 页面
原文地址:https://www.cnblogs.com/dyfblogs/p/14961351.html