分享一个能解决Django静态文件的库

Dec. 19, 2017, 1:10 a.m.

前几天有个刚入门 Python 的朋友和我说,他用 Django 整了了个自己的博客,在准备上线的时候发现静态文件很麻烦,网上查的教程都需要用到 Nginx

他说有没有什么办法只需要靠 Django 本身就能解决的,或者说 Python的范围内,而且他的这个博客也不会有多大的流量,基本上也不需要什么性能问题。

基本上他就是不想太麻烦,比如,只需要通过 pip 安装一些包,然后在 Django 里配置一些东西,然后有一个命令就可以把博客跑起来,先有点成绩,才有动力慢慢往深处学习嘛

我和他说,还有真有,你的这个想法,我曾经也想过,也找到了解决方案:

dj-static

# 再没追求也不能用 python manage.py runserver 来运行吧
# 先装个 gunicorn 然后再装个 dj-static
pip install gunicorn
pip install dj-static

然后在 wsgi.py 文件里

import os

from django.core.wsgi import get_wsgi_application
from dj_static import Cling  # 导入 Cling

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.settings")

application = Cling(get_wsgi_application())  # 在这儿使用 Cling 

然后再使用 gunicorn 把项目运行起来就可以了,

这样在 DEBUG = False 时,也不会出现找不到静态文件的问题了,这儿省略了,静态文件的收集操作,还有 settings.py 中的 STATIC_URL 和 STATIC_ROOT 等配置,这些都很简单,官方文档也有很详细的说明,可以根据你现在使用的 Django 版本去查询相应的文档即可

好处

可以尽量地保持开发环境和生产环境的一致性

  • 除了 DEBUG 值的修改,不需要再为了静态文件的管理再做些什么
  • 这是一个生产环境可用的方案,但不是一个高性能的解决方案

运行环境

  • Python:2.7.10
  • Django:1.11.5
  • gunicorn:19.7.0
  • dj-static:0.0.6
  • 个人计算机:iMac
  • 操作系统:macOS
  • 处理器:2.9GHz 四核 Intel Core i5
  • 内存:8GB 1600MHz DDR3

返回首页