• 02.Django静态文件配置


    Django静态文件配置

    概述:
      静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):
      URI请求-----> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx.
      conf里的location
      |---------->如果是静态文件,则由nginx直接处理
      |---------->如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配
      以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制


    01.static配置:

    STATIC主要指的是如css,js,images这样文件:

    STATIC_URL = '/static/' # 别名
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR,"static"), #实际名 ,即实际文件夹的名字
    )

    注意点1:
    django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找
    <script src="/statics/jquery-3.1.1.js"></script>
    ------error-----不能直接用,必须用STATIC_URL = '/static/':
    <script src="/static/jquery-3.1.1.js"></script>

    注意点2:
    如果把static放在app里
    STATICFILES_DIRS = (
    ("app01",os.path.join(BASE_DIR, "app01/statics")),
    )

    <script src="/static/app01/jquery.js"></script>


    02.media配置:
    用户上传文件的文件夹

    # in settings:

    MEDIA_URL="/media/"
    MEDIA_ROOT=os.path.join(BASE_DIR,"app01","media","upload")


    # in urls:

    from django.views.static import serve
    url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),

    静态文件的处理又包括STATIC和MEDIA两类,这往往容易混淆,在Django里面是这样定义的:

    MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义

    MEDIA_ROOT=c: empmedia,那么File=models.FileField(upload_to="abc/")#,
    上传的文件就会被保存到c: empmediaabc

    eg:

    class blog(models.Model):
      Title=models.charField(max_length=64)
      Photo=models.ImageField(upload_to="photo")


    上传的图片就上传到c: empmediaphoto,而在模板中要显示该文件,则在这样写
    在settings里面设置的MEDIA_ROOT必须是本地路径的绝对路径,一般是这样写:

    BASE_DIR= os.path.abspath(os.path.dirname(__file__))
    MEDIA_ROOT=os.path.join(BASE_DIR,'media/').replace('\','/')

    MEDIA_ROOT=os.path.join(BASE_DIR, '/media/')


    MEDIA_URL是指从浏览器访问时的地址前缀,举个例子:
    MEDIA_ROOT=c: empmediaphoto
    MEDIA_URL="/data/"
    在开发阶段,media的处理由django处理:

    访问http://localhost/data/abc/a.png就是访问c: empmediaphotoabca.png

    在模板里面这样写<img src="/media/abc/a.png">

    在部署阶段最大的不同在于你必须让web服务器来处理media文件,因此你必须在web服务器中配置,
    以便能让web服务器能访问media文件
    以nginx为例,可以在nginx.conf里面这样:

    location ~/media/{
    root/temp/
    break;
    }

  • 相关阅读:
    Javascript异步数据的同步处理方法
    《Node.js In Action》笔记之流程控制
    《第一行代码》笔记
    【转向Javascript系列】深入理解Web Worker
    【转向Javascript系列】从setTimeout说事件循环模型
    以todomvc为例分析knockout、backbone和angularjs
    25个国内顶级技术开发团队Github
    配置Redis作为缓存(六种淘汰策略)
    JVM性能优化 初识JVM
    JVM性能优化垃圾回收算法详解
  • 原文地址:https://www.cnblogs.com/QQL-anatkh/p/9568274.html
Copyright © 2020-2023  润新知