在django中将图片、javascript、css称为静态文件。如何将这些静态文件显示在django中呢?近期做一个项目,一直困扰着我,后来查找各种资源,终于在官方文档中找到。
在setting.py文件中进行修改
1INSTALLED_APPS 中要有
django.contrib.staticfiles
2要设置静态文件查找目录
STATIC_URL = '/static/'
或者:
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
3在模版template中,使用静态文件连接时要么硬编码,例如:“/static/img/myexample.jpg”
注意:静态文件需要放在STATICFILES_DIRS声明的文件夹里。比如我的目录结构如下
要么使用static模版标签,例如:
{% load static %} <img src="{% static "img/myexample.jpg" %}" alt="My image"/>
4存储静态文件在静态文件目录中
要么在每个app目录下,新建一个static文件夹,把静态文件放到其中。例如:在app1包里有static/img/myexample.jpg与之相关的设置就是在setting.py文件中设置
STATIC_URL = '/static/'
要么将所有的静态文件放到一个公共的地方,方便对其管理和共享。例如:在manage.py同级目录下新建一个static文件夹,在这个文件夹下在建一个img文件夹,里面有myexample.jpg文件。在与之相关的设置是
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
django系统会首先在STATICFILES_DIRS中查找所需的静态文件,然后在STATIC_URL中查找,如果有同名的文件,会返回第一个找到的文件。
二、我的一个例子:
setting.py文件下
STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
static文件结构如下
在template文件中有如下片段:
{% block content %}
<div>
{% load static %}
<p>
<a href="/app1/index/"><img src="{% static "img/success1.jpg" %}" alt="My image" height="600px" width=auto/></a>
</p>
</div>
{% endblock %}
下面是实验效果