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小程序
Aug 15 Python
在双python下设置python3为默认的方法
Oct 31 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
python之pexpect实现自动交互的例子
Jul 25 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
Python classmethod装饰器原理及用法解析
Oct 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类的反射用法实例
2014/11/03 PHP
php异常处理捕获错误整理
2019/09/23 PHP
VBScript版代码高亮
2006/06/26 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python实现购物车购物小程序
2018/04/18 Python
python线程池threadpool使用篇
2018/04/27 Python
Python对excel文档的操作方法详解
2018/12/10 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Python如何使用字符打印照片
2020/01/03 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
golang/python实现归并排序实例代码
2020/08/30 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
小学教师岗位职责
2013/11/25 职场文书
教师职位说明书
2014/07/29 职场文书
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
python高温预警数据获取实例
2022/07/23 Python
spring boot实现文件上传
2022/08/14 Java/Android