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中的变量、引用、拷贝和作用域的问题
Apr 07 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
详解python中的json的基本使用方法
Dec 21 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
详解Python 解压缩文件
Apr 09 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
如何在python中实现随机选择
Nov 02 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
python数字图像处理:图像简单滤波
Jun 28 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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php Session存储到Redis的方法
2013/11/04 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
php 可变函数使用小结
2018/06/12 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
Python 文件和输入输出小结
2013/10/09 Python
Python如何为图片添加水印
2016/11/25 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python守护进程实现过程详解
2020/02/10 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
食品营养与检测应届生求职信
2013/11/08 职场文书
2014年征兵标语
2014/06/20 职场文书
开幕式邀请函
2015/01/31 职场文书
个性与发展自我评价
2015/03/06 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle