当前位置: 首页 > 编程笔记 >

django中静态文件配置static的方法

章安易
2023-03-14
本文向大家介绍django中静态文件配置static的方法,包括了django中静态文件配置static的方法的使用技巧和注意事项,需要的朋友参考一下

环境

  1. centos7
  2. django 1.11
  3. nginx

白话

我们可以使用Template 设置我们的网页,同时,一个完美的网页需要css,js,image 等静态文件的支持。

django中配置方式貌似有不少总,因为很多相关的博客写的方式并不一致,当然这可能是django 的版本不同导致的。

当我们在一个项目下创建一个app后,我们就需要为该app下创建一个static 文件夹来存放相关静态资源。

但创建了多个app后,就需要在多个app下创建static。

这样引入了一个问题,因为,我们的可能用了同一个js文件。分别存放显然是浪费加载时间。

于是在实际部署的时候,我们会将不同app下的static 文件放到一个“合适”的地方。提高资源加载速度,同时也方便管理。

好了,大概就是这个思路,我们下面介绍如何配置

配置

step one

--app
 --migrations
 --static
  --css
  --js
  --image
 --templates
 --__init__.py
 ...

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

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

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

step two

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

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

这个STATIC_ROOT 就是我们最终部署时候需要使用的,解决资源分散的问题。

BASE_DIR 这个变量在settings.py的开始部分被定义,就是项目根目录的目录名。

os.path.join 方法,在项目根目录下新建一个static文件夹。

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

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

step three

创建文件夹完,配置文件这两步都完成后,我们需要的就是把他放到网页中显示。

在app下新建一个templates,如果有就不用创建

--app
 --migrations
 --static
 --templates
  --appname
   --index.html
 --__init__.py
 ...

大家注意,我并没有直接在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>

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

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

python manage.py runserver 0.0.0.0:9000

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

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

step four

python manage.py collectstatic

该命令收集项目下的静态文件,统一保存到 STATIC_ROOT 就是我们第二步,刚刚配置的。

--project
 --project
 --static
 --app1
 --app2
 --manage.py
 ...

step five

nginx 中配置

 location ^~ /static/ {
  root /home/project/;
  }

这个地方 注意配置到static的上级就可以了。

我之前配置成了root /home/project/static 就会一直提示404

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

重新启动nginx ,看看是否成功了呢?

如果成功了,可以将app下的static删掉再试试,理论上也是可以成功的,因为此时我们已经将项目所有的静态文件全都集中到了根目录下的static中。

总结

配置静态文件还是要先了解他是如何生效的,one by one,搞清逻辑。

那样在配置才不会混乱,否则不同的教程只会让人抓狂。

如果找不到相关博客的话,静下心来阅读官方文档。你可以做到的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍django静态文件加载的方法,包括了django静态文件加载的方法的使用技巧和注意事项,需要的朋友参考一下 在模板中往往要加载静态文件,如CSS, JavaScript,图片等。那么这些文件在django中如何才能正确加载呢? 首先要在settings文件中进行设置,关于静态文件的设置选项主要由以下几项: 1. STATIC_URL = '/static/' 指定静态文件查找的ur

  • 本文向大家介绍Django静态资源URL STATIC_ROOT的配置方法,包括了Django静态资源URL STATIC_ROOT的配置方法的使用技巧和注意事项,需要的朋友参考一下 缘由   新手学习 Django 当配置好 HTML 页面后,就需要使用一些静态资源,如图片,JS 文件,CSS 样式等,但是 Django 里面使用这些资源并不是直接引用一下就好,还要配置路径即 STATIC_UR

  • 问题内容: 我无法显示我的静态文件。我尝试了各种设置和目录配置等,但是它们只是显示为404。我已经安装了debug_toolbar,所以知道STATIC_URL正在到达我的请求上下文。 显示/ static的目录结构(我还将目录和用户放置在餐应用文件夹中,只是为了尝试一下。 Settings.py(一些重要的设置,尽管我已经尝试了其他各种设置): 在base.html中呈现 问题答案: 这是dja

  • 我用的是同一种概念,我在第一节课上用过 但当我运行类Test2时,它给出了输出5。 我想知道初始化是什么时候发生的?我知道静态变量在编译时获得值。但是静态决赛呢?这个变量什么时候得到它的值?

  • 问题内容: 从主题上类似标题的数量来看,这似乎引起了很多混乱,但是尝试使用django开发服务器尝试在静态文件中可以找到的所有内容,我几乎放弃了希望! 因此,我的静态文件从C:/ Users / Dan / seminarWebsite / static /提供,其中我有用于图像,css等的子文件夹。 设置: 静态文件应用程序也处于活动状态。 网址: 模板: 但是,只有一个断开的链接出现在此地址处

  • 本文向大家介绍Linux 配置静态IP的方法,包括了Linux 配置静态IP的方法的使用技巧和注意事项,需要的朋友参考一下 在新安装的Linux系统命令行下, 敲入:ifconfig,显示如下界面。 上面这张图显示网卡没有启动,那么我们敲入代码:ifup eth0启动网卡。 网卡启动后,我们可以看出,IP地址和网关等其他信息都已经出现。 但是我们需要的是静态IP,即不随着时间改变而改变的IP地址。