Django入门--自定义过滤器与标签
---恢复内容开始---
为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式:
1.在APP目录下配置:针对某个应用特定的自定义
第一步:在APP目录下创建"templatetags"文件夹;
第二步:在"templatetags"文件夹下创建python模块(py文件)
2.在项目目录下配置:针对所有应用的自定义
第一步:在项目目录下创建一个新的app,例如"common"文件夹
第二步:在项目目录settings.py文件下的INSTALL_APPS对新app进行注册
第三步:在"common"文件夹下创建"templatetags"文件夹,在文件夹里创建自定义过滤器及标签
下面以第二种方式进行配置
一、自定义过滤器
模板过滤器本质上是函数,有一个或两个参数,返回字符串
第一个参数是传递进来的模板变量(不一定是字符串)
第二个参数是普通参数,可以是默认参数,也可以不要
在新建的templatetags文件夹下创建"common_filter.py"文件
要求,数据库中通过0、1记录性别,0表示女生,1表示男生,在common_filter.py文件自定义langunge功能,选择语言输出性别,其步骤如下:
1).template/student/views.py文件
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1},
{"id":10121,"name":'Kitty', "age":20, "sex":0},
{"id":10128,"name":'Kate', "age":19, "sex":0},
{"id":10133,"name":'Tom', "age":22, "sex":1},
{"id":10135,"name":'Rose', "age":20, "sex":0}
]
return render(request, 'student/index.html', context={
'students':students,
})
2).编辑common_filter.py文件,定义过滤器language函数,并通过django.template.Library的实例的filter方法进行注册
templeatetags/common_filter.py设置
from django import template
register = template.Library()
# 普通注册
def language(value, arg="zh"):
dt = {
"zh":['女', '男'],
"en":['female', 'male']
}
return dt[arg][value] #value为输入的值,分别为0、 1
register.filter(name="la", language)
或者
from django import template
register = template.Library()
# 装饰器注册
@register.filter
def language(value, arg="zh"):
dt={
"zh":['女','男'],
"en":['female', 'male']
}
return dt[arg][value]
3).在模板中使用,需要先通过python模块名进行load加载,然后在需要使用过滤器的地方添加自定义过滤器
在模板文件templates/student/index.html中调用需要先load下
# load调用自定义过滤器
{% load common_filter %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
然后通过参数调用,通过修改anguage参数可以改变性别语言输出,其中"zh"为默认参数
<table class="table">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
</thead>
<tbody>
{% for stu in students %}
<tr {% if stu.sex == 'Male' %}
style="color:red"
{% endif %}>
<td><a href="{% url "student:detail" stu.id%}">
{{ forloop.counter }}
</a>
</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
# 调用自定义过滤器
<td>{{ stu.sex|language:"en" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
二、自定义标签
模板标签用于实现各种逻辑,如for、if等,但有些逻辑无法用模块标签实现。Django提供了很多快捷方式编写大多数的类型的标签,常用的有简单标签以及自定义标签
更多自定义的标签类型请参照Django自定义标签
许多模板标签接受字符串、模板变量等作为参数,并根据输入的参数与外部信息进行处理,返回结果,例如url模板标签接受一个字符串以及模板变量,输出想要的结果。
1.简单标签(Sample)
Django通过django.template.Library.simple_tag()来编辑简单标签
创建一个输出当前时间的自定义标签
(1).方式一:一般使用
在新建的templatetags文件夹下创建"common_tag.py"文件,并通过django.template.Library的实例的simple_tag方法进行注册
1).common_tags.py文件:定义标签并注册
rom django import template
from datetime import datetime
register = template.Library()
@register.simple_tag(name="current")
def current_time(format_str):
return datetime.now().strftime(format_str)
2).templates/student/html文件:使用自定义标签
# load调用自定义过滤器
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
title>学生信息网页</title>
<link href="{% static 'student/css/mystyle.css' %}" rel="stylesheet">
</head>
<body>
# 调用自定义标签
<h1>当前时间为:{% current '%Y-%m-%d %H:%M:%S' %}</h1>
</body>
</html>
(2).方式二:上下文传参
在views.py中先设置format_str,然后通过context进行传递
1).student/views.py:定义模板变量
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1},
{"id":10121,"name":'Kitty', "age":20, "sex":0},
{"id":10128,"name":'Kate', "age":19, "sex":0},
{"id":10133,"name":'Tom', "age":22, "sex":1},
{"id":10135,"name":'Rose', "age":20, "sex":0}
]
format_str = "%Y-%m-%d %H:%M:%S"
return render(request, 'student/index.html', context={
'students':students,
'format_str':format_str
})
2).templatetags/common_tags.py文件:定义标签并注册,在simple_tag中设置take_context=True
from django import template
from datetime import datetime
register = template.Library()
@register.simple_tag(name="current", takes_context=True)
def current_time(context):
return datetime.now().strftime(context['format_str'])
3).templates/student/html文件:使用标签
# load调用自定义过滤器
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>学生信息网页</title>
<link href="{% static 'student/css/mystyle.css' %}" rel="stylesheet">
</head>
<body>
# 调用自定义标签,不需要添加参数
<h1>当前时间为:{% current %}</h1>
</body>
</html>
2.包含标签(Inclusion)
另一种常见的标签类型,通过渲染另一个模板来展示数据。有时候需要把某些数据渲染成一个固定样式是需要用到包含标签
Django通过django.template.Library.inclue_tag()来编辑简单标签
创建一个输出当前时间的自定义标签
在新建的templatetags文件夹下创建"common_tag.py"文件,并通过django.template.Library的实例的simple_tag方法进行注册,其步骤为:
a).定义views.py,为students添加课程信息:student/views.py
b).定义一个函数,接受调用时传递的模板变量:student/templatetags/comon_tags.py
c).在定义一个html模板:templates/student/show_list_as_ul.html
d).编辑index.html:templates/student/index.html
(1) 只有一个参数
1).student/views.py
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10121,"name":'Kitty', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10128,"name":'Kate', "age":19, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10133,"name":'Tom', "age":22, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10135,"name":'Rose', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']}
]
return render(request, 'student/index.html', context={
'students':students,
})
2).student/templatetags/comon_tags.py
from django import template
from datetime import datetime
register = template.Library()
@register.inclusion_tag("student/show_list_as_ul.html")
def show_list_as_ul(value):
return {'ls': value}
3).templates/student/show_list_as_ul.html
其中ls为2)中定义的ls
<ul>
{% for l in ls %}
<li>{{ l }}</li>
{% endfor %}
</ul>
4).templates/student/index.html
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<div class="container">
<table class="table">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>课程</th>
</tr>
</thead>
<tbody>
{% for stu in students %}
<tr {% if stu.sex == 'Male' %}
style="color:red"
{% endif %}>
<td><a href="{% url "student:detail" stu.id%}">
{{ forloop.counter }}
</a>
</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
<td>{{ stu.sex}</td>
# 调用自定义标签
<td>{% show_list_as_ul stu.course %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
(2) 有两个参数
1).student/views.py
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10121,"name":'Kitty', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10128,"name":'Kate', "age":19, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10133,"name":'Tom', "age":22, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10135,"name":'Rose', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']}
]
return render(request, 'student/index.html', context={
'students':students,
})
2).student/templatetags/comon_tags.py
from django import template
from datetime import datetime
register = template.Library()
@register.inclusion_tag("student/show_list_as_ul.html")
def show_list_as_ul(value, style):
return {'ls': value, 'style', style}
3).templates/student/show_list_as_ul.html
其中style、ls为2)中定义的style和ls
{% if style == 'button' %}
<div class="list-group">
{% for l in ls %}
<button type="button" class="list-group-item">{{ l }}</button>
{% endfor %}
</div>
{% elif style == 'link' %}
<div class="list-group">
{% for l in ls %}
<a href="#" class="list-group-item active">{{ l }}</a>
{% endfor %}
</div>>
{% else %}
<ul class="list-group">
{% for l in ls %}
<li class="list-group-item">{{ l }}</li>
{% endfor %}
</ul>
{% endif %}
4).templates/student/index.html
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<div class="container">
<table class="table">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>课程</th>
</tr>
</thead>
<tbody>
{% for stu in students %}
<tr {% if stu.sex == 'Male' %}
style="color:red"
{% endif %}>
<td><a href="{% url "student:detail" stu.id%}">
{{ forloop.counter }}
</a>
</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
<td>{{ stu.sex }}</td>
# 调用自定义标签,改变参数"link"、"button"等输出不同样式
<td>{% show_list_as_ul stu.course 'link'%}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
```<p>---恢复内容结束---</p>为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式:
**1.在APP目录下配置:针对某个应用特定的自定义**
第一步:在APP目录下创建"templatetags"文件夹;
第二步:在"templatetags"文件夹下创建python模块(py文件)
**2.在项目目录下配置:针对所有应用的自定义**
第一步:在项目目录下创建一个新的app,例如"common"文件夹
第二步:在项目目录settings.py文件下的INSTALL_APPS对新app进行注册
第三步:在"common"文件夹下创建"templatetags"文件夹,在文件夹里创建自定义过滤器及标签
下面以第二种方式进行配置
### 一、自定义过滤器
模板过滤器本质上是函数,有一个或两个参数,返回字符串
    第一个参数是传递进来的模板变量(不一定是字符串)
    第二个参数是普通参数,可以是默认参数,也可以不要
在新建的templatetags文件夹下创建"common_filter.py"文件
要求,数据库中通过0、1记录性别,0表示女生,1表示男生,在common_filter.py文件自定义langunge功能,选择语言输出性别,其步骤如下:
###### 1).template/student/views.py文件
```python
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1},
{"id":10121,"name":'Kitty', "age":20, "sex":0},
{"id":10128,"name":'Kate', "age":19, "sex":0},
{"id":10133,"name":'Tom', "age":22, "sex":1},
{"id":10135,"name":'Rose', "age":20, "sex":0}
]
return render(request, 'student/index.html', context={
'students':students,
})
2).编辑common_filter.py文件,定义过滤器language函数,并通过django.template.Library的实例的filter方法进行注册
templeatetags/common_filter.py设置
from django import template
register = template.Library()
# 普通注册
def language(value, arg="zh"):
dt = {
"zh":['女', '男'],
"en":['female', 'male']
}
return dt[arg][value] #value为输入的值,分别为0、 1
register.filter(name="la", language)
或者
from django import template
register = template.Library()
# 装饰器注册
@register.filter
def language(value, arg="zh"):
dt={
"zh":['女','男'],
"en":['female', 'male']
}
return dt[arg][value]
3).在模板中使用,需要先通过python模块名进行load加载,然后在需要使用过滤器的地方添加自定义过滤器
在模板文件templates/student/index.html中调用需要先load下
# load调用自定义过滤器
{% load common_filter %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
然后通过参数调用,通过修改anguage参数可以改变性别语言输出,其中"zh"为默认参数
<table class="table">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
</thead>
<tbody>
{% for stu in students %}
<tr {% if stu.sex == 'Male' %}
style="color:red"
{% endif %}>
<td><a href="{% url "student:detail" stu.id%}">
{{ forloop.counter }}
</a>
</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
# 调用自定义过滤器
<td>{{ stu.sex|language:"en" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
二、自定义标签
模板标签用于实现各种逻辑,如for、if等,但有些逻辑无法用模块标签实现。Django提供了很多快捷方式编写大多数的类型的标签,常用的有简单标签以及自定义标签
更多自定义的标签类型请参照Django自定义标签
许多模板标签接受字符串、模板变量等作为参数,并根据输入的参数与外部信息进行处理,返回结果,例如url模板标签接受一个字符串以及模板变量,输出想要的结果。
1.简单标签(Sample)
Django通过django.template.Library.simple_tag()来编辑简单标签
创建一个输出当前时间的自定义标签
(1).方式一:一般使用
在新建的templatetags文件夹下创建"common_tag.py"文件,并通过django.template.Library的实例的simple_tag方法进行注册
1).common_tags.py文件:定义标签并注册
rom django import template
from datetime import datetime
register = template.Library()
@register.simple_tag(name="current")
def current_time(format_str):
return datetime.now().strftime(format_str)
2).templates/student/html文件:使用自定义标签
# load调用自定义过滤器
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
title>学生信息网页</title>
<link href="{% static 'student/css/mystyle.css' %}" rel="stylesheet">
</head>
<body>
# 调用自定义标签
<h1>当前时间为:{% current '%Y-%m-%d %H:%M:%S' %}</h1>
</body>
</html>
(2).方式二:上下文传参
在views.py中先设置format_str,然后通过context进行传递
1).student/views.py:定义模板变量
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1},
{"id":10121,"name":'Kitty', "age":20, "sex":0},
{"id":10128,"name":'Kate', "age":19, "sex":0},
{"id":10133,"name":'Tom', "age":22, "sex":1},
{"id":10135,"name":'Rose', "age":20, "sex":0}
]
format_str = "%Y-%m-%d %H:%M:%S"
return render(request, 'student/index.html', context={
'students':students,
'format_str':format_str
})
2).templatetags/common_tags.py文件:定义标签并注册,在simple_tag中设置take_context=True
from django import template
from datetime import datetime
register = template.Library()
@register.simple_tag(name="current", takes_context=True)
def current_time(context):
return datetime.now().strftime(context['format_str'])
3).templates/student/html文件:使用标签
# load调用自定义过滤器
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
title>学生信息网页</title>
<link href="{% static 'student/css/mystyle.css' %}" rel="stylesheet">
</head>
<body>
# 调用自定义标签
<h1>当前时间为:{% current %}</h1>
</body>
</html>
2.包含标签(Inclusion)
另一种常见的标签类型,通过渲染另一个模板来展示数据。有时候需要把某些数据渲染成一个固定样式是需要用到包含标签
Django通过django.template.Library.inclue_tag()来编辑简单标签
创建一个输出当前时间的自定义标签
在新建的templatetags文件夹下创建"common_tag.py"文件,并通过django.template.Library的实例的simple_tag方法进行注册,其步骤为:
a).定义views.py,为students添加课程信息:student/views.py
b).定义一个函数,接受调用时传递的模板变量:student/templatetags/comon_tags.py
c).在定义一个html模板:templates/student/show_list_as_ul.html
d).编辑index.html:templates/student/index.html
(1) 只有一个参数
1).student/views.py
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10121,"name":'Kitty', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10128,"name":'Kate', "age":19, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10133,"name":'Tom', "age":22, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10135,"name":'Rose', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']}
]
return render(request, 'student/index.html', context={
'students':students,
})
2).student/templatetags/comon_tags.py
from django import template
from datetime import datetime
register = template.Library()
@register.inclusion_tag("student/show_list_as_ul.html")
def show_list_as_ul(value):
return {'ls': value}
3).templates/student/show_list_as_ul.html
其中ls为2)中定义的ls
<ul>
{% for l in ls %}
<li>{{ l }}</li>
{% endfor %}
</ul>
4).templates/student/index.html
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<div class="container">
<table class="table">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>课程</th>
</tr>
</thead>
<tbody>
{% for stu in students %}
<tr {% if stu.sex == 'Male' %}
style="color:red"
{% endif %}>
<td><a href="{% url "student:detail" stu.id%}">
{{ forloop.counter }}
</a>
</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
<td>{{ stu.sex}</td>
# 调用自定义标签
<td>{% show_list_as_ul stu.course %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
(2) 有两个参数
1).student/views.py
def index(request):
students = [
{"id":10117,"name":'Willy', "age":21, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10121,"name":'Kitty', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10128,"name":'Kate', "age":19, "sex":0, "course":['python', 'java', 'C', 'C++']},
{"id":10133,"name":'Tom', "age":22, "sex":1, "course":['python', 'java', 'C', 'C++']},
{"id":10135,"name":'Rose', "age":20, "sex":0, "course":['python', 'java', 'C', 'C++']}
]
return render(request, 'student/index.html', context={
'students':students,
})
2).student/templatetags/comon_tags.py
from django import template
from datetime import datetime
register = template.Library()
@register.inclusion_tag("student/show_list_as_ul.html")
def show_list_as_ul(value, style):
return {'ls': value, 'style', style}
3).templates/student/show_list_as_ul.html
其中style、ls为2)中定义的style和ls
{% if style == 'button' %}
<div class="list-group">
{% for l in ls %}
<button type="button" class="list-group-item">{{ l }}</button>
{% endfor %}
</div>
{% elif style == 'link' %}
<div class="list-group">
{% for l in ls %}
<a href="#" class="list-group-item active">{{ l }}</a>
{% endfor %}
</div>>
{% else %}
<ul class="list-group">
{% for l in ls %}
<li class="list-group-item">{{ l }}</li>
{% endfor %}
</ul>
{% endif %}
4).templates/student/index.html
{% load common_tags %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<div class="container">
<table class="table">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>课程</th>
</tr>
</thead>
<tbody>
{% for stu in students %}
<tr {% if stu.sex == 'Male' %}
style="color:red"
{% endif %}>
<td><a href="{% url "student:detail" stu.id%}">
{{ forloop.counter }}
</a>
</td>
<td>{{ stu.name }}</td>
<td>{{ stu.age }}</td>
<td>{{ stu.sex }}</td>
# 调用自定义标签,改变参数"link"、"button"等输出不同样式
<td>{% show_list_as_ul stu.course 'link'%}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
Django入门--自定义过滤器与标签的更多相关文章
- Django——5 自定义过滤器及标签
Django 自定义过滤器 自定义标签 简单标签 包含标签 自定义过滤器 自定义过滤器就是一个带有一个或两个参数的Python 函数: - (输入的)变量的值 —— 不一定是字符串形式. - 参数的值 ...
- Django模板—-自定义过滤器和标签
一.filter和simple_tag 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建template ...
- Django 05 自定义过滤器、自定义标签
Django 05 自定义过滤器.自定义标签 一.自定义过滤器 #1.在项目目录下创建一个python package包 取名为common(这个名字可以自定义) #2.在common目录下创建一个t ...
- django自定义过滤器和标签
1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创 ...
- 小白学习django第三站-自定义过滤器及标签
要使用自定义过滤器和标签,首先要设置好目录结构 现在项目目录下建立common的python包 再将common加入到setting.py中的INSTALLED_APP列表中 在common创建目录t ...
- Django学习——Django settings 源码、模板语法之传值、模板语法之获取值、模板语法之过滤器、模板语法之标签、自定义过滤器、标签、inclusion_tag、模板的导入、模板的继承
Django settings 源码 """ 1.django其实有两个配置文件 一个是暴露给用户可以自定义的配置文件 项目根目录下的settings.py 一个是项目默 ...
- 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)
一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{ }} 变量相关{% %} ...
- 自定义过滤器和标签 & 静态文件相关
自定义过滤器和标签 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建templatetags模块(模块名 ...
随机推荐
- [Angular] Freshness Caching Policy - Network First, Cache Last
In some cases, you want to get fresh data instead of cache data to the screen, such as stock applica ...
- openstack中Nova组件Networks的全部python API 汇总
感谢朋友支持本博客.欢迎共同探讨交流.因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- JavaScript高级特性之原型
JavaScript的原型 原型prototype属性仅仅适用于函数对象(这里的函数对象是自己为了理解更好定义的,普通对象是没有原型属性的) 1.研究函数原型: <script type=&qu ...
- 文字录入无限制Undo,Redo的实现
这里只针对Edit的内容做一个简单的undo,redo功能: 原理就是,将新增字符和相关信息添加到undo列表,在undo动作时,取记录信息,并在edit中删除新增的字符,然后将此动作添加到redo列 ...
- JFinal Starting scanner at interval of 5 seconds.报错
Starting JFinal 2.0 Starting scanner at interval of 5 seconds. Starting web server on port: 80 Excep ...
- ubuntu之修改ls显示颜色
Linux 系统中 ls 文件夹的痛苦我就不说了,为了不伤眼睛,一般 ssh 终端背景都用的黑色,文件夹又是你妈的深蓝色,每次看文件夹都要探头仔细去看.这下彻底解决这个问题. 因为ubuntu下的 ...
- C语言 - 头文件使用案例
源代码分门别类管理,通过头文件. 放置一些函数声明,变量声明,常量定义,宏定义. hotel.h #ifndef HOTEL_H_INCLUDED #define HOTEL_H_INCLUDED # ...
- Spark MLlib介绍
Spark MLlib介绍 Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因: (1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足 ...
- poj 3913(水)
Description You have devised a new encryption technique which encodes a message by inserting between ...
- SwiftUI 官方教程(四)
SwiftUI 官方教程(四) 4. 自定义 Image View 搞定名称和位置 view 后,我们来给地标添加图片. 这不需要添加很多代码,只需要创建一个自定义 view,然后给图片加上遮罩.边框 ...