django 组件 自定义过滤器 自定义标签 静态文件配置
组件
将一些功能标签写在一个html文件里,这个文件作为一个组件,如果那个文件需要就直接拿过来使用即可;
这是title.html文件,写了一个导航栏,作为一个公用的组件
<div style="background-color: cyan;width: 100%;height: 40px;">
<span style="font-size: 20px;">首页</span>
<span style="font-size: 20px;">搜索</span>
<span style="font-size: 20px;">登录</span>
<span style="font-size: 20px;">注册</span>
</div> 引用方式:
{% include 'title.html' %}
将这个语句放在你html文件需要的位置;就会将这这个导航栏应用过来
自定义过滤器
首先在app应用下边创建一个文件夹 ---- templatetags (必须是这个名字,不能改变)
在这个文件夹里边写入自己的python的逻辑文件,名字随意 ,这个文件的名字是tag
# 下面是一个自定义的过滤器
from django import template
# 导入django自带的包
register = template.Library() # register 名字不能改变,注册器
#在你写的函数头部加上这个装饰器,这就是一个过滤器
# 这是无参数的过滤器
@register.filter
def filter(n1):
'''
这是一个子自定义的过滤器,无参数的过滤器
:param n1: 接收的在html文件中的过滤器中的管道符前边的那个变量的值
:return:
'''
return n1 + '你好' # 这是有参数的过滤器
@register.filter
def filter2(n1,n2):
'''
这是一个子自定义的过滤器,有参数的过滤器
:param n1: 接收的在html文件中的过滤器中的管道符前边的那个变量的值
:param n2: 传入的参数,管道符后边的,如果不需要传参数就不要写,
:return:
''' return n1 + n2
在HTML文件中的应用
# 首先导入tag.py这个文件
{% load tag %} # 无参数的使用方法
<h1>{{ name|filter2}}</h1> # 有参数的使用方法
<h1>{{ name|filter2:'你好坏'}}</h1>
文件中需要的参数是在视图文件中传入的
def home(request):
name = 'adrian'
return render(request,'home.html',{'name':name})
自定义标签
首先在app应用下边创建一个文件夹 ---- templatetags (必须是这个名字,不能改变)
在这个文件夹里边写入自己的python的逻辑文件,名字随意 ,这个文件的名字是tag
# 下面是一个自定义标签
from django import template
# 导入django自带的包
register = template.Library() # register 名字不能改变,注册器
#在你写的函数头部加上这个装饰器,这就是一个自定义标签 @register.simple_tag
def filter2(n1,n2): return n1 + n2
在HTML文件中的应用
# 首先导入tag.py这个文件
{% load tag %} <h1>{% filter 'x' 'o' %}</h1>
文件中需要的参数是在视图文件中传入的
def home(request):
name = 'adrian'
return render(request,'home.html',{'name':name})
inclusion_tag ---- 用于返回html代码片段
这个方法是给你需要的html页面返回一个html文件的片段,通过渲染一个html文件模板来显示一些数据
应用的创景一般是网页的左侧下拉栏,这种下拉栏一般网页中的应用多,但是数据有不一样,所以就使用inclusion_tag来做不同页面的不同数据需求的处理;
首先写一个简单的函数
from django import template
register = template.Library() # register 名字不能改变,注册器
# 在这个函数的头部加一个有参装饰器
@register.inclusion_tag('result.html')
# 这个装饰器的参数是一个html页面
def inclusion(): return {'l1':['抽烟','喝酒','烫头']}
# 在定义的这个字典中的键 l1 必须是result这个html文件中的for所有循环的列表名,这两个名字必须一致
result这个html文件的代码
<ul>
{% for i in l1 %}
<li>{{ i }}</li>
{% endfor %}
</ul>
如何使用这个方法呢?
# 在你需要的网页上将这个文件导入tag.py 文件是你写函数的文件
{% load tag %} # 将在你需要的地方写
{% inclusion %}
# inclusion是你写的函数
静态文件配置
在页面中需要加入一些css,js,图片等文件,如何在django中写这些文件的路径呢?
#首先在你的项目文件里建立一个statics文件夹,在这个文件夹下在增加你需要的文件夹,比如css,js文件夹,在这些文件夹下写入对应的css,js文件,
其次就是在django的settings配置文件进行文件配置
#关键的概念:Django中,静态资源的存放通过设置 STATIC_URL, STATICFILES_DIRS 来设置,一般STATIC_URL设置为:/static/ ---- 这个名字就叫做静态文件路径别名,可以改变 #STATIC_URL='/static/', 这个static 是在Django 具体APP下建立的statics目录,用来存放静态资源。而STATICFILES_DIRS一般用来设置通用的静态资源,例如: STATICFILES_DIRS=[os.path.join(BASE_DIR, "statics"),]
在html文件中如何使用
<link rel="stylesheet" href="/static/css/index.css">
在插入css文件时只需要写你的路径别名,在加上css文件夹名和文件名
django 组件 自定义过滤器 自定义标签 静态文件配置的更多相关文章
- 自定义过滤器和标签 & 静态文件相关
自定义过滤器和标签 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建templatetags模块(模块名 ...
- Django框架之模板继承和静态文件配置
一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...
- Django框架之模板基础,静态文件配置
一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...
- django系列4.2--自定义标签, 自定义过滤器, inclusion_tag, 引入静态文件(css,js等)
项目的目录为 在app中创建templates时,最好要再创建一个app名相同的文件夹,因为项目找文件时从第一个app开始遍历,不同app内的同名文件会有冲突,所以这样处理 一.自定义标签和过滤器 1 ...
- HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM
HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...
- day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间
day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...
- day51:django:dispatch&模板渲染&过滤器&标签&组件&静态文件配置
目录 1.dispatch 2.模板渲染 3.过滤器 4.标签 5.组件 6.静态文件配置 dispatch 回顾:CBV对应的URL传参 urls.py url(r'^book/(\d+)/(\d+ ...
- django自定义过滤器和标签
1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创 ...
- django 简易博客开发 3 静态文件、from 应用与自定义
首先还是贴一下源代码地址 https://github.com/goodspeedcheng/sblog 上一篇博客我们介绍了 django 如何在views中使用templates以及一些常用的数 ...
随机推荐
- angular8 大地老师学习笔记---第八课
/*ViewChild获取dom节点 1.模板中给dom起一个名字 <div #myBox> 我是一个dom节点 </div> 2.在业务逻辑里面引入ViewChild imp ...
- 使用Canvas绘制分享海报
这几天接到一个需求,需要将一个邀请链接转换为一个带有二维码并且能够分享出去的海报图,网上找了很多的方法,也踩了不少的坑,希望大家遇到类似的需求能够少走弯路.. 具体效果图如下: 效果图 首先我采用了 ...
- JavaScript之函数原型链完整版
我的上一篇文章有解释绅士原型及简单的原型链,在这里我将对原型链做完整讲述: // 函数的原型链: 把函数当对象(实例对象)来看 function Person(){} // 底层Function创建出 ...
- kvm环境部署及常用指令
Linux下通过kvm创建虚拟机,通过vnc连接,做好配置后,通过ssh登录,并开启iptables Kvm虚拟化搭建教程参考链接:https://jingyan.baidu.com/article/ ...
- maven方式使用jetty
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...
- 坐标转换成SVG的path路径
大家好,我是一个刚入职的前端小白,入职后一直做关于svg 的东西,我将自以为很方便的方法提供给大家. function svgPathCurv(a,b,curv) { /* * 弯曲函数. * a:a ...
- 园子的品牌专区上新:NoSQL 数据库佼佼者 Aerospike
品牌专区是园子去年推出的新楼盘,为优秀的科技企业在园子里提供一个地方,展示自己的品牌,分享自己的技术内容. 最近我们和国外领先的 NoSQL 数据库厂商 Aerospike 达成了合作,入驻了园子的品 ...
- MySQL中的这个池子,强的一批!
Mysql 中数据是要落盘的,这点大家都知道.读写磁盘速度是很慢的,尤其和内存比起来更是没的说.但是,我们平时在执行 SQL 时,无论写操作还是读操作都能很快得到结果,并没有预想中的那么慢. 可能你会 ...
- 用python+sklearn(机器学习)实现天气预报 准备
用python+sklearn机器学习实现天气预报 准备 项目地址 系列教程 0.流程介绍 1. 环境搭建 a.python b.涉及到的机器学习相关库 sklearn panda seaborn j ...
- web元素定位和appium-app元素定位
一.web页面元素定位工具介绍 1.打开google浏览器,按F12进入开发者模式,如下图: 2.用鼠标点击下图红色框中的箭头--然后鼠标移动到web页面的元素上(此处为百度框),会自动定位到对应的h ...