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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python里隐藏的“禅”
Jun 16 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Django视图和URL配置详解
Jan 31 Python
python之pandas用法大全
Mar 13 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python不同系统中打开方法
Jun 23 Python
Python字符串的15个基本操作(小结)
Feb 03 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
基于jquery的页面划词搜索JS
2010/09/14 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
python批量提取word内信息
2015/08/09 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
社会实践心得体会
2014/01/03 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
校园元旦活动总结
2014/07/09 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
论文答谢词
2015/01/20 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技