Django的静态文件
1170 字
6 分钟
Django的静态文件
- 1纯手撸Web框架
- 2Python框架初识
- 3Django框架初识
- 4Django框架安装
- 5Django框架入门之小白必会三板斧
- 6Django便捷函数shortcuts
- 7Django框架入门之静态文件
- 8Django的静态文件本文
- 9Django框架入门之request对象
- 10Django框架入门之ORM操作
- 11Django框架之生命周期流程图
- 12Django框架之路由层
- 13Django框架之视图层
- 14Django框架之模板层
- 15Django框架之模型层
- 16图书管理系统
- 17Ajax基础操作
- 18Ajax进阶操作
- 19JS确认插件补充
- 20Django框架之序列化组件serializers
- 21Django框架之批量插入数据
- 22Django框架补充之分页器推导
- 23Django框架之Form组件
- 24Django框架Form组件之常用字段及插件
- 25Django框架Form组件之渲染HTML代码
- 26Django框架Form组件之渲染错误信息
- 27Django框架Form组件之钩子函数(Hook)
- 28Django框架Form组件之源码
- 29Django框架Form组件之模型表单ModelForm
- 30Django表单API详解
- 31Django框架之Cookie和Session
- 32Django框架之会话session补充
- 33Django框架之CBV添加装饰器的三种方式
- 34Django框架之中间件引入
- 35Django框架之中间件思想
- 36Django框架之csrf跨站请求
- 37Django框架之auth模块
- 38Django框架之settings源码
- 39Django框架之settings配置
- 40Django框架之settings核心配置项
- 41RBAC权限系统
- 42前端基础之URL编码
【一】Django有两种静态文件
【1】static
- 称为静态文件夹,是不变的,形成网站的核心部件
- 如 CSS文件,JS文件,背景图片等
- 可为Templates模板提供支持
【2】media
- 称为媒体文件夹,是变动的,由用户定义的文件
- 如 用户头像, 用户上传的图片或视频等;
- 可为富文本编辑器mdeditor提供支持
【二】前言
- 我要做的是个人博客,不提供其他人注册登录功能,故media只是为了存放文章的封面、图片等信息。
- 故在目录方面,我的设置如下:
- static目录与Templates目录放在一起,由“主题目录接管”
- 主题目录:与manage.py同级目录下创建templates目录,目录下创建主题文件夹,如default,里面创建templates和static静态文件夹
- 如果想更换主题,只需创建新主题文件夹,变动templates和static即可
- media目录放在根目录,毕竟我的“主题”无论怎么换,博客文章内容不会换,涉及的本地图片不会变动
【三】配置说明(static)
【1】引入
- http://127.0.0.1:8000/static-files/
- Django的静态文件处理一般分debug模式和非debug模式
- debug模式的情况下允许访问静态资源,无需STATIC_ROOT
- 非debug模式也就是生产模式,在服务器运行时, 静态资源需要使用nginx或者apache之类的工具维护
【2】配置解释
- STATIC_URL - 可以理解为通过url访问static文件的路径
- 如 项目路径是:{{projectName}}/static/common_static/test.css
- 则访问url是:http://IP:PORT/static/common_static/test.css
- STATIC_ROOT - 可以理解为你打算在服务器上存储static文件的路径(通过 python manage.py collectstatic命令)
- collectstatic命令后将复制静态文件到STATIC_ROOT指定的目录中,
- 部署django项目的时候需要
- STATICFILES_DIRS - 可以理解为配置Django寻找静态文件时首先去STATICFILES_DIRS里面寻找, 其次再到各个app的static文件夹里面找
- Django查找静态文件是惰性查找
- 查找到第一个,就停止查找了
- django放置静态文件有两种方式
- 一是在每个app里新建一个static目录,将静态文件放置其中;
- 另一种是对公共文件的处理,如jQuery bootstrap等,这时就需要配置 STATICFILES_DIRS。
【三】配置文件修改(static)
【1】debug模式
- 确定主题目录/templates/default/,创建static文件夹
# debug模式在settings中进行设置
# 对外提供WEB访问时的URL地址STATIC_URL = '/static/'# 开发阶段放置项目自己的静态文件,不能包含STATIC_ROOT路径STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'templates', THEME, 'static'),]【2】非debug模式
# 在`settings.py`同级的`urls.py`内还需要把`STATIC_URL`和django的url连接起来from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()# 非debug模式在settings中进行设置,需要修改
STATIC_URL = '/static/'
# 执行collectstatic命令后会将项目中的静态文件(包括STATICFILES_DIRS、自带admin的静态文件)收集到该目录下面来(所以不应该在该目录下面放置自己的一些静态文件,因为会覆盖掉)STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'collect_static'),)【3】模板中使用静态文件
- {%load static%}和{%load staticfiles%}:哪个是首选?
- Django2.x之后废弃{%load staticfiles%}语法
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image"/>【4】全局配置
- 模板中使用静态文件,无需load static,配置全局使用load static
- TEMPLATES加入’builtins’: [‘django.templatetags.static’]
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates', THEME, 'templates')], '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', ], 'builtins': ['django.templatetags.static'] }, },]【四】配置文件说明(media)
- MEDIA_ROOT - 设置用户上传文件的实际保存目录,该文件夹自动创建
- MEDIA_URL - 代表用户通过URL来访问这个本地地址的URL
- 如 本机MEDIA_URL 为/media/
- 则访问url是:http://IP:PORT/media/
【五】配置文件修改(media)
【1】配置文件注册
# 在根目录下的 settings.py 中添加如下配置
MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,"media")【2】路由映射
# 导入项目文件夹中settings.py模块# 或者 from . import settingsfrom django.conf import settings
# 导入相关静态文件处理的views控制包from django.views.static import serve
urlpatterns = [ re_path('media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}),]【3】模型文件配置
- FileField或ImageField字段适用于存储文件/图片
- 出于性能考虑,文件并不直接保存到数据库,而是保存在文件系统里,因此该字段只是记录一个路径而已。
img_link = models.ImageField(upload_to='images/%Y-%m', max_length=255, help_text='提示:不添加封面可以不选择图片,默认没有图片', blank=True, null=True, verbose_name='文章封面')
# upload_to相当于上传到/media/images目录下,格式为year-month,如2019-10
avatar = models.FileField(verbose_name='头像', upload_to='upload/avatar/')
# upload_to相当于上传到/media/upload/avatar/目录下【4】模版文件使用
【1】方式一
<img src="/media/{{ article.img_link }}">【2】方式二
<img src="{{ article.img_link.url }}">支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
2
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














