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 web程序
Sep 11 Python
python实现批量改文件名称的方法
May 25 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
Python程序中的观察者模式结构编写示例
May 27 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
Tensorflow 查看变量的值方法
Jun 14 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
Python数据可视化图实现过程详解
Jun 12 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
Python实现Excel自动分组合并单元格
Feb 22 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
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
写给爸爸的道歉信
2014/01/15 职场文书
物流专员岗位职责
2014/02/17 职场文书
会计自荐信范文
2014/03/09 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
学雷锋感言
2015/08/03 职场文书
上班旷工检讨书
2015/08/15 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL