Django之--模板加载图片

2018-06-23 13:32:28来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

在使用Django加载图片时遇到了一些问题,在模板html文件中无论使用绝对路径还是当前相对路径都无法找到图片,一直报403和404的错误,后来结合官网和网上的其他资料总算是成功了,这里记下来。

参考网址:
https://docs.djangoproject.com/en/2.0/howto/static-files/
Django将图片,JS,CSS等文件称作静态文件,如果你要在模板中引用这些静态文件,你必须设置static_url或者static_root。
1.修改settings.py文件,添加如下内容:
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATICFILES_DIRS = [
     os.path.join(BASE_DIR, "static")
]

意思是将静态文件的URL设为BASE_DIR/static。并将此路径加入PATH。

2.修改模板中对于图片的引用路径:

{% load static %}
<img src="{% static "1.png" %}" alt="Leo头像" height=100 width=100 />

Django在查找图片时会默认的使用static()方法(前提是你INSTALLED_APPS里包含django.contrib.staticfiles)到你给定的STATIC_URL目录下寻找静态文件,这种load写法是官网写法,比较推荐。

3.创建相应的目录,并将图片放置到此路径下:

mkdir -p /root/Django/mysite/static   --/root/Django/mysite/是我的app根目录(BASE_DIR)

这样就可以实现调用了,示例结果如下:

而且此时我们还可以通过以下URL直接访问此图片:(虽然ursl.py没有设置此url)

http://192.168.1.193:8000/static/1.png --8000是我的对外端口
 
其他:
以上的static_url参数使用的是基于BASE_DIR的相对路径,但很多时候我们引用的静态文件并不一定能被允许放在app的目录下,一般是有一个统一的存放路径存放的,因此django的static()方法也提供了另一种访问方式,即STATIC_ROOT参数(static()的第二个输入参数):
你需要在settings.py中在STATIC_URL下面添加上此参数,其值是静态文件存放的绝对路径。
使用此参数时建议执行下python manage.py collectstatic,作用是将你STATIC_URL下的所有静态文件全部拷贝至STATIC_ROOT目录下。
关于STATIC_ROOT在urls.py中的具体调用,官网也有说明,但是还未测试,这部分生产上会比较有用,有待后继补充。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:pythonweb服务器编程(三)

下一篇:Python:Django框架开发数据可视化网站