素材牛VIP会员
django无法加载static文件
 qi***un  分类:Python  人气:2234  回帖:8  发布于6年前 收藏


这是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;
        
    }

讨论这个帖子(8)垃圾回帖将一律封号处理……

Lv6 码匠
蜜***园 Web前端工程师 6年前#1

@zwillon 说的是正解,应该检查nginx配置,如果配置正常的话,在运行服务前 先使用

python manage.py collectstatic

把放在app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中
然后,nginx配置里

location /static {
    alias /home/zc/blogtest/static; # 这里是STATIC_ROOT的绝对路径
}

另一种方法是:
不收集静态文件,把nginx中的static配置到app的static目录绝对路径,这种方式有一个麻烦的地方就是,当你有多个app并且使用了django的admin、suit这种应用的话,需要配置多个路径,会麻烦一些,所以推荐第一种收集静态文件的方式

Lv3 码奴
那***s JS工程师 6年前#2

如果是跟nginx集成的话,静态文件的处理应该是直接由nginx来处理,而不要再交由django处理了

Lv1 新人
威***军 职业无 6年前#3

首先,settings.py需要设置static_root

再者,urls.py中需要添加对static的映射
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

Lv1 新人
威***军 职业无 6年前#4

这个访问不了应该跟django.没啥关系,是nginx配置的问题。

Lv5 码农
me***20 技术总监 6年前#5

STATIC_URL = '/static/'
STATIC_ROOT= os.path.join(BASE_DIR,'statics/')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "blog/static/"),
    os.path.join(BASE_DIR,'static/')
)

好像django里边STATICFILES_DIRS里边不能包括STATIC_ROOT会报错,所以我把root改成了statics,部署的时候再改回来

Lv6 码匠
这***2 学生 6年前#6

既然是404,你为什么不看nginxerror.log呢?

Lv5 码农
em***co PHP开发工程师 6年前#7

最近刚好在练习django blog。
1.查看网页源代码,如果引入的静态文件是404说明静态文件配置路径不对,403则可能是权限问题。Nginx中配置
location /static {

alias /home/zc/blogtest/static; # 这里是STATIC_ROOT的绝对路径

}
是正解(解决404);403则看一下文件权限。

2.增加富文本编辑器之后,一要文件夹权限要修改,二是nginx要重启。我是把uwsgi以及nginx全部重启之后就可以了。

Lv5 码农
钢***侠 Web前端工程师 6年前#8

很久没写django了

manage.py runserver启动的时候,静态文件是通过django本身来访问的,

你的代码里面貌似没贴相关的代码(urlpatterns部分)

另外一种应该是通过nginx访问静态文件的,那个如果访问不了的话,应该是配置或者nginx权限的问题

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取