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操作日期和时间的方法
Mar 11 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
Python 实现12306登录功能实例代码
Feb 09 Python
python爬虫获取多页天涯帖子
Feb 23 Python
Python中的枚举类型示例介绍
Jan 09 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 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获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python线程详解
2015/06/24 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
python xpath获取页面注释的方法
2019/01/14 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
keras得到每层的系数方式
2020/06/15 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
英国袜子店:Sock Shop
2017/01/11 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
新闻专业本科生的自我评价分享
2013/11/20 职场文书
创业计划书怎样才能打动风投
2014/01/01 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
大学生先进事迹材料
2014/02/16 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
小学生家长意见
2015/06/03 职场文书