问题: 部署上线后访问地址发现所有的静态文件都404
1.第一步测试python runserver 启动发现也没有静态文件
原因是设置了 DEBUG = True,那么django便会自动帮我们对静态文件进行路由;但是当我们设置debug=Flase后,'django.contrib.staticfiles’会关闭,即Django不会自动搜索静态文件。这一功能便没有了,此时静态文件就会出现加载失败的情况,想要让静态文件正常显示,我们就需要配置静态文件服务了
# setting.py
STATIC_URL = '/static/'
STATIC_ROOT = 'static' ## 新增行
STATICFILES_DIRS = [
os.path.join(BASE_DIR, '/static/'), ##修改地方
]
# url.py
from django.views import static ##新增
from django.conf import settings ##新增
from django.conf.urls import url ##新增
urlpatterns = [
path('', include('user.urls')),
## 以下是新增
url(r'^static/(?P<path>.*)$', static.serve,
{'document_root': settings.STATIC_ROOT}, name='static'),
]
2.再用runserver已经可以正常启动,但是用gunicorn时又出现问题
于是面向百度编程
找到两个方法,同时使用
# 方法一
# wsgi.py
from django.contrib.staticfiles.handlers import StaticFilesHandler # 添加模块
application = StaticFilesHandler(get_wsgi_application()) # 修改
# 方法二
# url.py
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# ... the rest of your URLconf goes here ...
urlpatterns += staticfiles_urlpatterns()
3.还是不行,404
仔细看了下第一步的setting.py的修改,觉得os.path.join(BASE_DIR, '/static/'), ##修改地方
这一步并没有给一个路径,于是修改为os.path.join(BASE_DIR, 'static')
,再次启动,SUCCESS!
里面肯定是一些操作是多余的,暂且不谈,后续测试