1. 程式人生 > >Django提供靜態文件服務

Django提供靜態文件服務

base 分享 服務 承擔 href 推薦 結構圖 shadow settings

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提供靜態文件服務