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开发实例分享bt种子爬虫程序和种子解析
May 21 Python
Python中apply函数的用法实例教程
Jul 31 Python
Python编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
Python json模块dumps、loads操作示例
Sep 06 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
详解Django 时间与时区设置问题
Jul 23 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
把vgg-face.mat权重迁移到pytorch模型示例
Dec 27 Python
使用Python构造hive insert语句说明
Jun 06 Python
python 利用zmail库发送邮件
Sep 11 Python
python开发实时可视化仪表盘的示例
May 07 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
桌面中心(二)数据库写入
2006/10/09 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python实现汉诺塔算法
2021/03/01 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
学校后勤人员职责
2013/12/27 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
弄虚作假心得体会
2014/09/10 职场文书
医药销售自我评价200字
2014/09/11 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书