django静态文件的托管

因为微信抢票小作业的原因,看了一下 微信抢票 的代码,再次复习了一下django. 

其中关于静态文件的托管这件事,这次花时间彻底看了一下,在这里记录下来。

1. 静态文件可以交给django托管

但是只能在debug模式下交给django托管。

相关设置为settings.py中的STATIC_URL='/static/'和INSTALLED_APPS中加入 'django.contrib.staticfiles'.

也就是说,STATIC_URL开头的请求,都转发给了'django.contrib.staticfiles'。它在找文件的时候,会找一些Django的内置路径,因为django.admin页面中的样式表都是/static/admin/css/base.css 这样引用的,所以,STATIC_URL一般都是设置'/static/',如果STATIC_URL不是'/static/', django.admin页面就会打不开。

如果自己也有静态文件要托管,则可以在settings.py中加入STATICFILES_DIRS  = [whatever], 声明自己的静态文件在的地方。这样,通过 /static/xxx,xxx也会在STATICFILES_DIRS中列出的目录下进行寻找。

所以说,要让django 来做静态文件serve, 应该设置 STATIC_URL为'/static/',然后所有的对静态文件的路径都以 /static开头, 并在STATICFILES_DIRS里加上自己的静态文件路径。

2. 生产模式下还是得交给nginx

但是考虑到,生产的时候是nginx来做的,所以生产的时候直接在nginx里面有一条,把 /static 转发到诸多STATICFILES_DIRS里面。至于Django内置的admin页面,生产环境中不要用它。(要用就得找出Django内置的找css/js的目录在哪里了,不过,在生产环境中有必要暴露admin页面给用户吗?很危险而且不必要吧)

你可能感兴趣的:(django静态文件的托管)