Django 本地项目设置DEBUG=False静态文件与上传文件404不存在错误解决

Django 本地项目设置DEBUG=False静态文件与上传文件404不存在错误解决

生产环境:
python=3.8
django=3.1

默认配置django在DEBUG=True时通过’django.contrib.staticfiles’ (app) 搜索静态文件;用户上传则需编写代码手动配置

from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
]
# 用户上传媒体文件(用户头像)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

当DEBUG=False时会发生静态文件与用户上传文件404不存在

解决方案: 配置django.views.static.serve()为静态文件与用户上传文件提供服务

一 .设置settings
# project/setting.py 

DEBUA=False
# 静态文件
STATIC_URL = '/static/'
# collectstatic收集静态文件的绝对路径
STATIC_ROOT = os.path.join(BASE_DIR, "static_root")
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
# 媒体文件地址:用户上传文件保存/访问的位置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
二.设置urls
# app/urls

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, re_path

urlpatterns = [
	re_path(r'^static/(?P<path>.*)$', serve, {
    
    'document_root': settings.STATIC_ROOT}, name='static'),
    re_path(r'^media/(?P<path>.*)$', serve, {
    
    'document_root': settings.MEDIA_ROOT}, name='media'),
]
三.执行python manage.py collectstatic命令(收集静态文件)
# 终端命令

python manage.py collectstatic
四.启动项目 查看是否显示成功
python manage.py rusnerver
如有问题欢迎留言…

猜你喜欢

转载自blog.csdn.net/weixin_44053341/article/details/111248849