layout: post
title: Django static 路径的详解
category: Django
tags:
description:


django使用html+css+JavaScript,所以我们不可避免的使用一些样式表啥的,所以在html中使用这些文件的时候路径的设置就比较重要。

一般我们的static文件包括如下文件夹:

static-
    |-data
    |-image
    |-javaScript
    |-style

一般存放在项目的目录下,与app的文件夹并列。
如下:
图片说明

html中使用静态文件的方法有两种,

第一种是直接指定静态文件的路径。

第二种是设置静态文件路径。

第一种:

在settings.py 中设置(精确设置)

STATICFILES_DIRS = [
    ("style", os.path.join(BASE_DIR, 'static/style')),
]

上面这样写,系统就同意你去static/style这个文件夹下拿资源了,但是你现在还不能使用image,javaScript,data这几个文件夹,因为没同意

下面给出一个简单写法:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

这样整个static文件下的东西都可以用了

在main.html中使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
    <link rel="stylesheet" href="/static/style/stylemain.css" />
</head>
<body>
    <div class="novel_background">
        hello css
    </div>
</body>
</html>

如果在css中使用了图片,那么css的写法如下:(stylemain.css)

.novel_background
{
    background:url(/static/image/123.jpg) center repeat
}

这种写法很简单,直接写路径就好了。

其中需要注意的一点是路径一定要从根目录开始写起即

/static/*****

一定不要写成

./static/*****

前边加.或者..或者../../等等,这样都是相对路径的写法。

并且相对是目前的url。

比如我当前的url是 127.0.0.1:8000/page/1

那么./static/image/1.jpg

实际指的路径就是 127.0.0.1:8000/page/1/static/image/1.jpg
显然这个路径是错误的。

但是对于当前url为 127.0.0.1:8000时你便不会发现这个错误。很危险呢。

第二种:

设置静态文件路径

首先还是先在setting.py中设置静态文件的路径

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

然后我们在html中这样使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
    {% load staticfiles %}
    <link rel="stylesheet" href="{% static 'style/stylemain.css'%}" />
</head>
<body>
    <div class="novel_background">
        <a href="/page/12343">hello css</a>
    </div>
</body>
</html>

这样的好处是我们改动静态文件的路径的时候不用改动在代码中的所用使用静态文件的路径。

应为这样写是动态的写法。

若是修改静态文件的路径,我们只需要修改setting.py中的那个static的路径就好