static 静态本地变量的设置

--app
    --migrations
    --static
        --css
        --js
        --image
    --templates
    --__init__.py
    ...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

文件结构如上所示,注意,我这里只展示了某app下的结构,而不是整个项目结构,可能你的没有templates这个文件夹,这不要紧,这个是我创建的。

我们最好在static下分类好不同文件夹 css , js,image.(这是推荐的做法)

多个app时,我们就在不同的app 下创建static。(后面我们在讲更合理的方法,这里需要这样做为了你理清步骤)


在settings.py中的STATIC_URL = '/static/'后面添加

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

这个STATIC_ROOT 就是我们最终部署时候需要使用的,解决资源分散的问题。 
BASE_DIR 这个变量在settings.py的开始部分被定义,就是项目根目录的目录名。 
os.path.join 方法,在项目根目录下新建一个static文件夹。

我看到很多博客这里配置的很多,很乱,让人摸不着头脑。 

这个地方完全可以这样配置,加载我们的静态资源。(信我,我可是被很多不负责任的博客坑惨了)


创建文件夹完,配置文件这两步都完成后,我们需要的就是把他放到网页中显示。 
在app下新建一个templates,如果有就不用创建

--app
    --migrations
    --static
    --templates
        --appname
            --index.html
    --__init__.py
    ...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

大家注意,我并没有直接在templates下直接创建index.html ,而是创建了一个”appname”(就根据你的app来命名这样不会冲突)。并在appname 下创建的index.html。

因为django去找template的时候是吧app下的templates ,存为一个list。如果我们多个app,就可能导致,想访问app2的index,结果却返回了app1的index.html。

index.html 内容

{% load static %}   #这个地方引入static这个文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<img src="{% static "image/logo.png" %}" alt="My image"/>  #{% static "image/logo.png" %}表示路径

</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里的#号注释是方便大家理解,并不是html支持的格式,粘贴的时候需要去掉

并在image文件夹下加入一张名为logo.png的图片,因为图片可以直观的判读我们的设置是否生效。

python manage.py runserver 0.0.0.0:9000 
访问你的9000端口,查看时候生效。注意我们到这里还未配置nginx.

如果正确,说明路径没问题。


python manage.py collectstatic 

该命令收集项目下的静态文件,统一保存到 STATIC_ROOT 就是我们第二步,刚刚配置的。
--project
    --project
    --static
    --app1
    --app2
    --manage.py
    ...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7


nginx 中配置

    location ^~ /static/ {
        root /home/project/;
        }
  • 1
  • 2
  • 3
  • 4

这个地方 注意配置到static的上级就可以了。 
我之前配置成了root /home/project/static 就会一直提示404

在部署的时候,django也建议将settings.py中的debug=True 改为debug=False。以保证安全性。

重新启动nginx



猜你喜欢

转载自blog.csdn.net/zhangyu4863/article/details/80188587
今日推荐