• django静态文件配置


    下载了个网页模板,建好Django工程,runserver后页面不显示css,jpg之类的静态文件。找了一下网上的解决方案,照着做也没对,主要是他们没说为什么要这么做,每个人搭建的环境不一样,解决的方法肯定也不完全一样。这里把解决的思路写下来,供大家参考。

    1. 静态文件丢失是因为文件路径找不到。server端会有如下提示

    [21/Sep/2014 11:28:01] "GET /static/img/f.png HTTP/1.1" 404 1941
    [21/Sep/2014 11:28:01] "GET /template/static/css/style.css HTTP/1.1" 404 1980
    [21/Sep/2014 11:28:01] "GET /static/img/r.png HTTP/1.1" 404 1941
    [21/Sep/2014 11:28:01] "GET /static/img/t1.png HTTP/1.1" 404 1944

    2. 需要修改settings.py文件中的STATIC_ROOT, STATIC_URL, STATICFILES_DIRS三个配置项,但具体怎么修改就与各人搭建的环境有关了。

    STATIC_URL配置的是匹配的静态文件请求的url,这与页面中的链接地址要一致。如html文件中的静态文件链接为/static/,则配置项为

    * foo.html *
    <link rel="stylesheet" type="text/css" href="/static/css/style.css">
    
    * settings.py *
    STATIC_URL = '/static/'

    STATIC_URL的作用等同于在urls.py文件中匹配url地址请求

    3. 当匹配到静态文件请求时,则会在STATICFILES_DIRS中查找静态文件,静态文件一般都是集中存放,在同一父目录下,因此可以设置STATIC_ROOT来减少重复输入。由于配置项不支持相对路径,只能使用绝对路径,考虑到移植的灵活性,STATIC_ROOT可写为

    STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'template/static')

    这里的__file__是settings.py文件,即以settings.py文件所在的目录出发,找到静态文件所处的目录。

    4. 最后是静态文件所处的位置

    STATICFILES_DIRS = (
        ('css', os.path.join(STATIC_ROOT, 'css')),
        ('img', os.path.join(STATIC_ROOT, 'img')),
    )

    每类静态文件设置为一个元组,元组第一项‘css’,‘img’等要与html中链接地址保持一致,不能出现配置的('img', ...),但请求的链接地址为:.../static/images/abc.jpg,而元组第二项的‘css’和‘jpg‘要与文件夹名一致。

  • 相关阅读:
    第16章 行为型模式—命令模式
    第15章 行为型模式—职责链模式
    第14章 结构型模式—代理模式
    第12章 结构型模式—外观模式
    第11章 结构型模式—装饰模式
    第10章 结构型模式—组合模式
    第9章 结构型模式—桥接模式
    第8章 结构型模式—适配器模式
    Qt中Qstring,char,int,QByteArray之间到转换(转)
    QT:QByteArray和QByteArray、char *(转)
  • 原文地址:https://www.cnblogs.com/newerly/p/3984408.html
Copyright © 2020-2023  润新知