博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分离django中的媒体文件,静态文件和网页
阅读量:7005 次
发布时间:2019-06-27

本文共 2148 字,大约阅读时间需要 7 分钟。

前言

文章会在github中持续更新

作者: knthony

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_urlpatternsfrom django.conf.urls.static import staticfrom django.conf import settingsurlpatterns = [    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中可以直接以如下方式访问

注意要在第一行加上{% 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了

这样就可以访问我们的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('\\','/'),

这是最近写django项目总结的一点点,第一次写文章,大牛勿喷,感谢大牛能指出文中的缺漏和错误

转载地址:http://kxytl.baihongyu.com/

你可能感兴趣的文章
linux find detail
查看>>
DLA SQL分析函数:SQL语句审计与分析的利器
查看>>
JavaScript表格的隔行换色开发
查看>>
企业应该选择哪种区块链
查看>>
antd组件Upload实现自己上传
查看>>
基于SimpleChain Beta的跨链交互与持续稳态思考
查看>>
面向IoT的协议选择思考
查看>>
重读 Youtube 深度学习推荐系统论文,字字珠玑,惊为神文
查看>>
重磅!复宏汉霖首款产品汉利康®获批,成中国生物类似药里程碑
查看>>
kubernetes安装
查看>>
回首2018 | 分析型数据库AnalyticDB:不忘初心 砥砺前行
查看>>
SpringCloud API网关-Zuul
查看>>
宽凳科技公布最新进展:已完成百余座城市数据采集,即将发布首张全自动高精度地图...
查看>>
GraphQL 分享 理论篇
查看>>
抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法
查看>>
Zabbix 中文显示(学习笔记四)
查看>>
财报显示阿里云“可怕”之处 和AWS等全球头部云厂商还差多少?
查看>>
【对讲机的那点事】你知道吗?对讲机天线决定了对讲机的通信效果
查看>>
Android GreenDao常用注解
查看>>
二十分钟教你如何将区块链应用与函数计算相结合
查看>>