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根据路径导入模块的方法
Sep 30 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
在Python中使用成员运算符的示例
May 13 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python反射的用法实例分析
Feb 11 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
Python实现位图分割的效果
Nov 20 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把网页保存为word文件的三种方法
2014/04/01 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
php服务器的系统详解
2019/10/12 PHP
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
九步学会Python装饰器
2015/05/09 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python write无法写入文件的解决方法
2019/01/23 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
提升Python程序性能的7个习惯
2019/04/14 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
CSS3 边框效果
2019/11/04 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
建龙钢铁面试总结
2014/04/15 面试题
医学生个人求职信范文
2013/09/24 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
办公室文员自荐书
2014/02/03 职场文书
招商专员岗位职责
2014/02/08 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
幸福终点站观后感
2015/06/04 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python