
这是settings配置,换成注释部分也不行

uploads下的文件可以访问,但是static下都是404
同样的配置manage.py runserver后台没问题,但是用uwsgi部署就出问题

以下是uwsgi
# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir           = /home/zc/blogtest
# Django's wsgi file
module          = blogtest.wsgi
# the virtualenv (full path)
home            = /home/zc/blogtest/blogtestenv
pythonpath = /usr/bin/python3
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 3
# the socket (use the full path to be safe
socket          = /home/zc/blogtest/blogtest.sock
下边是nginx
 location /media  {
        alias /home/zc/blogtest/uploads;  # your Django project's media files - amend as required
    }
    location /static {
        alias /home/zc/blogtest/static; # your Django project's static files - amend as required;
        
    }
                            
                                    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
很久没写django了
manage.py runserver启动的时候,静态文件是通过django本身来访问的,
你的代码里面貌似没贴相关的代码(urlpatterns部分)
另外一种应该是通过nginx访问静态文件的,那个如果访问不了的话,应该是配置或者nginx权限的问题
好像django里边STATICFILES_DIRS里边不能包括STATIC_ROOT会报错,所以我把root改成了statics,部署的时候再改回来
这个访问不了应该跟django.没啥关系,是nginx配置的问题。
首先,settings.py需要设置static_root
再者,urls.py中需要添加对static的映射
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
既然是404,你为什么不看
nginx的error.log呢?@zwillon 说的是正解,应该检查nginx配置,如果配置正常的话,在运行服务前 先使用
把放在app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中
然后,nginx配置里
另一种方法是:
不收集静态文件,把nginx中的static配置到app的static目录绝对路径,这种方式有一个麻烦的地方就是,当你有多个app并且使用了django的admin、suit这种应用的话,需要配置多个路径,会麻烦一些,所以推荐第一种收集静态文件的方式
最近刚好在练习django blog。
1.查看网页源代码,如果引入的静态文件是404说明静态文件配置路径不对,403则可能是权限问题。Nginx中配置
location /static {
}
是正解(解决404);403则看一下文件权限。
2.增加富文本编辑器之后,一要文件夹权限要修改,二是nginx要重启。我是把uwsgi以及nginx全部重启之后就可以了。
如果是跟nginx集成的话,静态文件的处理应该是直接由nginx来处理,而不要再交由django处理了