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实现将汉字转换成汉语拼音的库
May 05 Python
Python lxml模块安装教程
Jun 02 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
TensorFlow损失函数专题详解
Apr 26 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
对python中assert、isinstance的用法详解
Nov 27 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
python中翻译功能translate模块实现方法
Dec 17 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的控制语句
2006/10/09 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
vue多次循环操作示例
2019/02/08 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
PyQt5响应回车事件的方法
2019/06/25 Python
python配置文件写入过程详解
2019/10/19 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
演讲稿开场白
2014/01/13 职场文书
关于期中考试的反思
2014/02/02 职场文书
运动会入场词50字
2014/02/20 职场文书
网站客服岗位职责
2014/04/05 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
mysql 带多个条件的查询方式
2021/06/05 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL