Django提供静态文件服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django提供静态文件服务相关的知识,希望对你有一定的参考价值。
Django为了方便开发调试,debug模式下runserver会利用django.contrib.staticfiles应用自动部署资源服务,但是生产模式下(或Debug=True时),如果还想要Django提供资源服务,就必须明确提供资源相关的配置,使其承担资源服务。
以下是两种使用Django提供资源服务的配置方式,推荐使用这一种,发布生产环境后,可以使用nginx提供静态资源服务,Django只做动态内容服务。
第一种形式:
1、项目设置中配置(settings.py)
STATIC_ROOT = os.path.join(BASE_DIR, ‘static‘)
2、在全局url中配置(urls.py)
re_path(r‘^static/(?P<path>.*)$‘, static.serve, {‘document_root‘: settings.STATIC_ROOT})
3、执行资源搜集命令
python manage.py collectstatic
4、模板中使用
<link rel="stylesheet" type="text/css" href="{% static ‘mysite/style.css‘ %}" />
5、项目结构图
第二种形式:
1、在应用url中配置(urls.py)
re_path(r‘^static/(?P<path>.*)$‘, static.serve, {‘document_root‘: ‘./static/‘}, name=‘static‘)
2、模板中使用
<link rel="stylesheet" type="text/css" href="{% url ‘mysite:static‘ ‘mysite/style.css‘ %}" />
3、项目结构图
参考:https://docs.djangoproject.com/zh-hans/2.0/ref/contrib/staticfiles/
以上是关于Django提供静态文件服务的主要内容,如果未能解决你的问题,请参考以下文章
无法让 Apache 为 django 管理静态文件提供服务
Heroku 上带有 gunicorn 服务器的 Django 项目不提供静态文件
(Django 2.1)当媒体文件完美服务时,我无法提供静态文件?