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爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Python中的字符串替换操作示例
Jun 27 Python
python中redis的安装和使用
Dec 04 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
视觉直观感受若干常用排序算法
Apr 13 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
NumPy 数组使用大全
Apr 25 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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实现根据词频生成tag云的方法
2015/04/17 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
python爬虫框架talonspider简单介绍
2017/06/09 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
空指针到底是什么
2012/08/07 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
通信研究生自荐信
2014/02/01 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
绿色环保标语
2014/06/12 职场文书
大学生求职信例文
2014/06/29 职场文书
个人收入证明模板
2014/09/18 职场文书
小学班主任评语
2014/12/29 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
详解Laravel框架的依赖注入功能
2021/05/27 PHP
JavaScript实现简单拖拽效果
2021/09/15 Javascript