Django 静态文件配置过程详解


Posted in Python onJuly 23, 2019

静态文件配置

概述:

静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):

URI请求 --> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx.conf里的location

--> 如果是静态文件,则由nginx直接处理

--> 如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配

以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制,方法如下:

static配置:

STATIC主要指的是如css、js、images这样文件:

STATIC_URL = '/static/' # 别名

STATICFILES_DIRS = [
  os.path.join(BASE_DIR, "static"), # 实际名,即实际文件夹的名字
]
# 注意:django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找

media配置:

MEDIA_URL = "/media/"

# 用户上传的文件(针对models.py中的FileField、ImageField字段)保存到哪
MEDIA_ROOT = os.path.join(BASE_DIR, "app名字", "media")
# 配合settings.py里的MEDIA_URL = "/media/"配置,即对外开放了这个接口的权限
from django.conf.urls import url
from django.views.static import serve
from . import settings

urlpatterns = [
  url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
]

ps:

静态文件的处理又包括STATIC和MEDIA两类,这往往容易混淆,在Django里面是这样定义的:

MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义

MEDIA_ROOT = c:\temp\media,那么File=models.FileField(upload_to="abc/")#,上传的文件就会被保存到

c:\temp\media\abc
eg:
class blog(models.Model):
Photo = models.ImageField(upload_to="photo")

上传的图片就上传到c:\temp\media\photo,而在模板中要显示该文件,则在settings里面设置MEDIA_ROOT(必须是本地路径的绝对路径),一般是这样写:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/').replace('\\','/')

MEDIA_URL是指从浏览器访问时的地址前缀,举个例子:

MEDIA_ROOT = c:\temp\media\photo
    MEDIA_URL = "/data/"

在开发阶段,media的处理由django处理:

访问http://localhost/data/abc/a.png就是访问c:\temp\media\photo\abc\a.png

在模板里面这样写<img src="/media/abc/a.png">

在部署阶段最大的不同在于你必须让web服务器来处理media文件,因此你必须在web服务器中配置,

以便能让web服务器能访问media文件。

以nginx为例,可以在nginx.conf里面这样:

location ~/media/{
          root/temp/
          break;
        }

具体可以参考如何在nginx部署django的资料。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 常用 PEP8 编码规范详解
Jan 22 Python
Python算法应用实战之队列详解
Feb 04 Python
Django自定义认证方式用法示例
Jun 23 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
django用户登录验证的完整示例代码
Jul 21 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 #Python
pandas通过字典生成dataframe的方法步骤
Jul 23 #Python
Python基于OpenCV实现人脸检测并保存
Jul 23 #Python
python 读取修改pcap包的例子
Jul 23 #Python
Django 用户认证组件使用详解
Jul 23 #Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 #Python
利用Python库Scapy解析pcap文件的方法
Jul 23 #Python
You might like
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
详解vue axios用post提交的数据格式
2018/08/07 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
详解js文件通过python访问数据库方法
2019/03/03 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
英国在线药房:Express Chemist
2019/03/28 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
机关作风整顿个人整改措施2014
2014/09/17 职场文书
工地材料员岗位职责
2015/04/11 职场文书
小学校本教研总结
2015/08/13 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript