Django中的静态文件管理过程解析


Posted in Python onAugust 01, 2019

Static files管理

static files指一些用到的像css,javascript,images之类的文件。

在开发阶段:

1.在settings设置INSTALLED_APPS中添加'django.contrib.staticfiles'。

2.将STATIC_URL设置为'/static/'。

3.将某个app要用的静态文件放置到my_app/static/my_app中,例如my_app/static/my_app/my_image.jpg.

当然也可以直接放在my_app/static中,但这样的话,如果在不同的app中有相同名字的静态文件,就会产生冲突。

4.模板中使用

{% load static %}
<img src="{% static 'my_app/myexample.jpg' %}" alt="My image"/>

5.如果有些不是某个app特用的静态文件,可以建立static文件夹将静态文件放置其中,settings设置:

STATICFILES_DIRS = (
  os.path.join(BASE_DIR, "static"),
  '/var/www/static/',
)

这样,在开发环境中,settings.DEBUG设置为True时,运行runserver就可以访问静态文件了。

如果INSTALLED_APPS中没有包含'django.contrib.staticfiles',需要手动运行django.contrib.staticfiles.views.serve()。

from django.conf import settings
from django.contrib.staticfiles import views
 
if settings.DEBUG:
  urlpatterns += [
    url(r'^static/(?P<path>.*)$', views.serve),
  ]

或者

from django.conf import settings
from django.conf.urls.static import static 
urlpatterns = [
  # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

以上都在DEBUG设置为True时起作用。

在生产环境中,就需要使用反向代理服务器直接访问静态文件,需要将静态文件转移到代理服务器可以访问的文件夹,设置

STATIC_ROOT = "/var/www/example.com/static/"

然后运行

python manage.py collectstatic

将各个app内的静态文件及STATICFILES_DIRS内的静态文件收集起来放置到STATIC_ROOT中由服务器apache或nhinx管理即可。

Media管理

MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。

假如有个Model

from django.db import models 
class Car(models.Model):
  name = models.CharField(max_length=255)
  price = models.DecimalField(max_digits=5, decimal_places=2)
  photo = models.ImageField(upload_to='cars')

设置MEDIA_ROOT=os.path.join(BASE_DIR , 'media'),用来存储用户上传的文件

MEDIA_URL=/media/,为MEDIA_ROOT中的文件建立url地址。

当建立一个Car实例时,Car的ImageField字段图片就存到media/cars文件夹里面

>>> car = Car.objects.get(name="57 Chevy")
>>> car.photo
<ImageFieldFile: chevy.jpg>
>>> car.photo.name
u'cars/chevy.jpg'
>>> car.photo.path
u'/media/cars/chevy.jpg'
>>> car.photo.url
u'/media/cars/chevy.jpg'

在模板中使用图片

<img src="{{ car.photo.url }}" alt="My image"/>

在urls.py中使用 django.contrib.staticfiles.views.serve() view

from django.conf import settings #from myapp import settings
from django.conf.urls.static import static
 
urlpatterns = patterns('',
  # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这样就可以使用media文件了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
提升Python程序运行效率的6个方法
Mar 31 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
解决python 输出是省略号的问题
Apr 19 Python
python使用turtle绘制分形树
Jun 22 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
python标记语句块使用方法总结
Aug 05 Python
pytorch构建多模型实例
Jan 15 Python
django orm模块中的 is_delete用法
May 20 Python
导致python中import错误的原因是什么
Jul 01 Python
pycharm 批量修改变量名称的方法
Aug 01 #Python
python腾讯语音合成实现过程解析
Aug 01 #Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 #Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 #Python
Python中list的交、并、差集获取方法示例
Aug 01 #Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 #Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 #Python
You might like
让你的PHP同时支持GIF、png、JPEG
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python如何为图片添加水印
2016/11/25 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
python安装后的目录在哪里
2020/06/21 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
会计与审计毕业生自荐信范文
2013/12/30 职场文书
校运会广播稿100字
2014/01/27 职场文书
离婚协议书范文2014
2014/10/16 职场文书
区域销售大会开幕词
2016/03/04 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
go web 预防跨站脚本的实现方式
2021/06/11 Golang