如何分离django中的媒体、静态文件和网页


Posted in Python onNovember 12, 2019

django项目中,占很大体积的是静态文件,媒体文件还有html代码,那我们该如何把它们分离出来以方便我们和服务器去管理和使用它们。

static 文件

static ,顾名思义就是静态文件,django自带了一个命令讲项目中所有的静态文件提取出来

python3 manage.py collectstatic

我习惯将这些可以从外部引入的文件放在项目的根目录下

DemoProject
--DemoProject
--DemoApp
--static
--manage.py

是的,就是它.

不过在此之前,我们需要在项目的setting.py中去设置提取文件所要存储的位置 STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, "static")

那这样,我们运行完上面的命令就会发现我们的项目结构中会多一个 static 文件

然后配置 DemoProject 下的 url ,添加

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.conf import settings


urlpatterns = [
  url(r'^admin/', admin.site.urls),
]


if settings.DEBUG or True:
  urlpatterns += staticfiles_urlpatterns()

当然这个if判断是在debug为true的时候支持这样的访问,那如果在真实生产环境中需要修改遮盖判断

不过到这里还没有结束,为了方便的引用我们需要在setting.py中添加

STATICFILES_DIRS = [
  ('bootstrap',os.path.join(BASE_DIR, 'static/bootstrap').replace('\\','/')),
]

注意这种方式在html中可以直接以如下方式访问

<link rel="stylesheet" href="{% static " rel="external nofollow" bootstrap/css/bootstrap.min.css" %}">

注意要在第一行加上 {% load staticfiles %}

media 文件

网站上总是会有音乐视频或者图片等体积比较大的文件,那我们将这些也从django项目中分离出来并进行调用

首先我们在和static同目录下新建一个media文件夹,在media中新建一个image作为我们存放图片的文件夹

结构如下:

DemoProject
--DemoProject
--DemoApp
--static
--media
---image
--manage.py

第一步:在 setting.py 最后添加

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

第二部:在urls.py中

在 urlpatterns += staticfiles_urlpatterns()
下面添加

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

说出来你可能不信,这样就ok了

<img src="/media/image/test.png" alt="">

这样就可以访问我们的media/image下的图片或者视频了

templates

如果我们想把项目中的网页代码文件归类分离出来

第一步:

TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
      os.path.join(BASE_DIR, 'templates').replace('\\','/'),
    ],
    'APP_DIRS': True,
    'OPTIONS': {
      'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
      ],
    },
  },
]

在上面代码的DIRS中添加你网页代码的路径,如果也想和我一样放在根路径下可以和我一样

os.path.join(BASE_DIR, 'templates').replace('\\','/')

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

Python 相关文章推荐
给Python初学者的一些编程技巧
Apr 03 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
利用Python破解验证码实例详解
Dec 08 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
python人民币小写转大写辅助工具
Jun 20 Python
selenium+python自动化测试之环境搭建
Jan 23 Python
python实现windows倒计时锁屏功能
Jul 30 Python
利用Python校准本地时间的方法教程
Oct 31 Python
python多进程并发demo实例解析
Dec 13 Python
python实现实时视频流播放代码实例
Jan 11 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 #Python
Python实现元素等待代码实例
Nov 11 #Python
如何基于python生成list的所有的子集
Nov 11 #Python
使用django和vue进行数据交互的方法步骤
Nov 11 #Python
如何使用python进行pdf文件分割
Nov 11 #Python
python实发邮件实例详解
Nov 11 #Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 #Python
You might like
php上的memcache和memcached两个pecl库
2010/03/29 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
主管竞聘书范文
2014/03/31 职场文书
教师演讲稿开场白
2014/08/25 职场文书
工作失职检讨书范文
2015/05/05 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
女儿满月酒致辞
2015/07/29 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
python 实现体质指数BMI计算
2021/05/26 Python
Flask response响应的具体使用
2021/07/15 Python