背景
在使用 Django 建设网站的过程中通常需要提供其他一些静态文件,例如 css,js,img 等,然而众所周知,django 无法像 apache 或者 iis 一样直接放上去就可以用,成为了众多新手的一大门槛,笔者也是被折磨了多次。花了一上午时间深入研究了 Django 相关官方文档,记录下来顺便整理一下。
静态文件提供的两种方式
Django 提供了 django.contrib.staticfiles 来帮助用户管理静态文件。
APP 内部文件
- 确保django.contrib.staticfiles 在 settting 文件的 INSTALLED_APPS中
- 在 setting 文件中,定义变量 STATIC_URL
STATIC_URL = ‘/static/‘ - 在 my_site/my_app/目录下新建文件夹static/my_app/ 然后在其下面存放文件 myexample.jpg文件
在模板中使用的时候,可以有两种使用方式
- 硬编码
直接硬编码为/static/my_app/myexample.jpg 这样。注意,Django 会查找所有 app 目录下的static/my_app 文件夹,例如你有两个 app,my_app1,my_app2
目录结构如下:
my_app1
-static
—my_app
—–myexample.jpg
my_app2
-static
—my_app
—–myexample.jpg
那么这样使用的时候,会直接使用第一个目录下的文件
- 软编码
也可以使用 static 模板标签来根据相对路径生成 url.
- 硬编码
全局文件
Django查找静态文件的顺序问题
首先会查找各个 app 下面的 STATIC_URL 文件所指定的目录