django静态文件说明

一、static文件settings.py有以下配置

1.STATIC_URL:映射本地静态文件地址 (可通过浏览器访问静态文件)

STATIC_URL = '/static/'   #相对路径   相当于本地地址的STATIC_ROOT

2.STATICFILES_DIRS:STATICFILES_DIRS就是告诉django,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app下的static文件夹里面找(注意:django查找静态文件实际上是惰性查找,找到第一个就停止查找了)

STATICFILES_DIRS = [

      os.path.join(BASE_DIR,'static'),

      os.path.join(BASE_DIR,'media'),

]

设置了STATICFILES_DIRS后,可在templates模板中使用static标签来加载静态文件,要使用static标签,就必须先要在html最上面加入{% load static %}

 *如果项目中用到了富文本或存储其他媒体文件,执行python manage.py collectstatic 会将富文本或其他媒体文件下载到STATIC_ROOT指定的路径中。(注意:下载之后注释掉STATIC_ROOT,否则再次运行项目是会报错。)

注意:STATIC_ROOT 配置部署的时候才用

STATIC_ROOT:部署所有静态文件聚合的目录

STATIC_ROOT = os.path.join(BASE_DIR,'static')    #是一个绝对路径,如D:项目路径下static    Django会把所有的static文件(如一些静态文件css、js、背景图片等)都复制到STATIC_ROOT文件夹(static)下

二、media的配置

1.MEDIA_ROOT = os.path.join(BASE_DIR,'media')  #绝对路径   用于指定上传文件的存储路径

2.MEDIA_URL = '/media/'    #相当路径 指定url路径  映射到MEDIR_ROOT存储路径

3.在模板中使用MEDIA_URL时,要在settings.py的TEMPLATES下的context_processors添加django.core.comtext_processors.media

4.设置路由urls.py

 

三、static和media的区别

参考博客:https://www.cnblogs.com/dreamkeeper/p/7749439.html

  • Static是静态文件,是不变的,形成网站的核心部件,主要存的是CSS,JavaScript,网站logo等不变的文件;
  • Media是变动的,由用户定义的文件,主要用来保存用户上传的文件,例如图片、视频等。    # models.ImageField(upload_to='' ")  你上传图片或视频保存的地址   
    MEDIA_ROOT = os.path.join(BASE_DIR,'static/images')  是   models.ImageField(upload_to='' ")  上传图片或视频保存的地址 

   在template html文件中读取MEDIA_ROOT路径下的静态文件,通过对象*.url来访问,例如:

  <a href=""><img src="{{ banner.image.url }}"></a>

      注意:如果保存在MEDIA_ROOT路径下的图片无法显示,则需在根urls.py配置处理静态文件:

    

from django.views.static import serve

from ttsx3.settings import MEDIA_ROOT

urlpatterns = [
    url('admin/', admin.site.urls),
    。。。
    。。。    
    url(r'media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}),
]
原文地址:https://www.cnblogs.com/c-pyday/p/11265424.html