Django自定义模板标签与过滤器
title: Django自定义模板标签与过滤器
date: 2024/5/17 18:00:02
updated: 2024/5/17 18:00:02
categories:
- 后端开发
tags:
- Django模版
- 自定义标签
- 过滤器开发
- 模板语法
- Python后端
- 前端集成
- Web组件
Django模板系统基础
1. Django模板语言概述
Django模板语言(DTL)是一种用于在HTML中插入动态内容的语言。它允许开发者在模板中使用变量、标签、过滤器和注释,以便动态生成页面内容。变量用于显示动态数据,标签用于控制模板逻辑,过滤器用于格式化变量的输出,注释用于添加注释而不会在最终渲染中显示。
2. 内置模板标签与过滤器的使用
Django提供了丰富的内置模板标签和过滤器,用于简化模板开发过程。常用的标签包括:
{% if %}
:条件判断{% for %}
:循环遍历数据{% block %}
:定义可被子模板覆盖的内容块 常用的过滤器包括:{{ variable|filter }}
:应用过滤器对变量进行格式化,如日期格式化、字符串处理等。
3. 模板继承与包含
模板继承是一种重要的技术,可以帮助开发者减少重复代码,提高代码复用性。在Django中,可以使用{% extends %}
标签声明模板继承关系,子模板可以覆盖父模板中定义的块内容。另外,{% include %}
标签允许将一个模板包含到另一个模板中,实现模块化开发。
自定义过滤器入门
1. 创建第一个自定义过滤器
要创建自定义过滤器,首先需要在Django应用的某个合适位置(通常是templatetags
目录下)创建一个Python模块,该模块包含自定义过滤器的代码。自定义过滤器是一个Python函数,接受一个或多个参数,并返回处理后的结果。以下是一个简单的示例:
# my_filters.pyfrom django import templateregister = template.Library()@register.filter
def add_hello(value):return f"Hello, {value}"
2. 注册和使用自定义过滤器
要在模板中使用自定义过滤器,需要在模板中加载自定义过滤器,并使用过滤器名称进行调用。在模板中加载自定义过滤器的方法是使用{% load %}
标签。以下是一个示例:
{% load my_filters %}{{ "World" | add_hello }}
在这个示例中,{% load my_filters %}
加载了名为my_filters.py
的自定义过滤器模块,然后在{{ "World" | add_hello }}
中调用了自定义过滤器add_hello
,将字符串"World"作为参数传递给该过滤器。
3. 过滤器的参数与返回值
自定义过滤器可以接受一个或多个参数,并可以返回任何类型的数据。在上面的示例中,add_hello
过滤器接受一个字符串参数,并返回一个带有"Hello, "前缀的新字符串。过滤器的参数可以是任意类型,包括字符串、数字、列表等。开发者可以根据需要自定义过滤器的参数和返回值,实现各种数据处理逻辑。
通过自定义过滤器,开发者可以扩展Django模板语言的功能,实现更复杂的数据处理和展示需求,提高代码的灵活性和可重用性。深入理解自定义过滤器的创建和使用方法,可以让开发者更好地定制模板渲染逻辑,满足不同场景下的需求。
深入自定义过滤器
1. 过滤器的多种应用场景
自定义过滤器在Django模板中有着广泛的应用场景,包括但不限于:
- 文本处理:格式化文本,如添加前缀、后缀,或者进行大小写转换。
- 数据转换:将数据从一种格式转换为另一种格式,例如将日期时间格式化。
- 条件渲染:根据条件决定渲染的内容,例如显示不同的文本或HTML片段。
- 国际化:根据当前语言环境显示不同的文本。
- 数据聚合:对列表或对象集合进行聚合操作,如求和、平均等。
例如,可以创建一个过滤器来格式化货币:
@register.filter
def format_currency(value):return f"${value:,.2f}"
在模板中使用:
{{ 1234567.89 | format_currency }}
这将输出:$1,234,567.89
。
2. 过滤器的性能优化
为了确保自定义过滤器的高效运行,可以采取以下措施:
- 避免复杂计算:过滤器应该执行快速操作,避免在模板渲染过程中进行复杂的计算或数据库查询。
- 缓存结果:如果过滤器的结果不依赖于外部状态,可以考虑缓存结果以减少重复计算。
- 使用内置过滤器:尽可能使用Django内置的过滤器,因为它们通常经过优化。
3. 过滤器的单元测试
为了确保自定义过滤器的正确性和稳定性,应该编写单元测试。使用Django的测试框架,可以轻松地对过滤器进行测试。以下是一个简单的测试示例:
from django.test import SimpleTestCase
from .templatetags.my_filters import format_currencyclass FilterTests(SimpleTestCase):def test_format_currency(self):result = format_currency(1234567.89)self.assertEqual(result, '$1,234,567.89')
在这个测试中,我们使用SimpleTestCase
来测试format_currency
过滤器,确保它正确地格式化了货币值。
通过深入了解自定义过滤器的多种应用场景、性能优化和单元测试,开发者可以更有效地利用这一功能,提升Django项目的质量和用户体验。
自定义模板标签基础
1. 创建简单的自定义模板标签
在Django中,自定义模板标签允许开发者扩展模板系统的功能。创建一个简单的自定义模板标签通常涉及以下步骤:
- 创建模板标签目录:在应用目录下创建一个名为
templatetags
的目录,并在该目录下创建一个Python模块文件(例如my_tags.py
)。 - 编写标签代码:在
my_tags.py
中定义标签。例如,创建一个简单的标签来显示当前时间:
from django import template
import datetimeregister = template.Library()@register.simple_tag
def current_time(format_string):return datetime.datetime.now().strftime(format_string)
在这个例子中,@register.simple_tag
装饰器将函数current_time
注册为一个模板标签。
2. 标签的注册与使用
注册标签后,可以在模板中使用它。首先,确保在模板中加载标签库:
{% load my_tags %}
然后,使用新定义的标签:
当前时间:{% current_time "%Y-%m-%d %H:%M:%S" %}
这将显示当前的日期和时间,格式为YYYY-MM-DD HH:MM:SS
。
3. 理解标签的上下文
模板标签可以访问当前模板上下文中的变量。这意味着标签可以基于模板中定义的变量来执行操作。例如,可以创建一个标签来根据某个条件显示不同的内容:
@register.simple_tag(takes_context=True)
def show_message(context):if 'user' in context and context['user'].is_authenticated:return "欢迎回来,用户!"else:return "请登录。"
在这个例子中,takes_context=True
参数允许标签访问当前的模板上下文。标签检查user
对象是否在上下文中,并根据用户的认证状态返回不同的消息。
在模板中使用这个标签:
{% show_message %}
根据上下文中的user
对象,标签将显示不同的消息。
通过理解如何创建、注册和使用自定义模板标签,以及如何利用标签的上下文,开发者可以更灵活地控制和定制Django模板的行为。
高级自定义模板标签
1. 包含标签与继承标签
包含标签(Inclusion Tag) :
- 使用
{% include %}
标签可以将一个模板的一部分嵌入到另一个模板中。例如:
{% include 'partial_template.html' with variable_name=value %}
这会将partial_template.html
中的内容插入到当前模板,其中variable_name
会被value
的值替换。
继承标签(Inheritance Tag) :
- Django的内置模板语言支持模板继承,但有时可能需要自定义的控制模板继承。这通常通过使用
{% extends %}
标签,但不直接是自定义标签。然而,可以创建一个包含继承逻辑的自定义函数,然后在模板中调用它。
@register.simple_tag
def custom_inherit(child_template, parent_template):# 在这里处理继承逻辑,如复制父模板内容并替换变量return render_to_string(parent_template, {'child_content': child_template_content})
在模板中使用:
{% custom_inherit 'child_template.html' 'parent_template.html' %}
2. 标签的参数与处理逻辑
参数处理:
- Django模板标签可以接受参数,这些参数在调用时传递给标签函数。例如,
current_time
标签可以接受一个格式字符串:
@register.simple_tag(takes_context=True)
def custom_format_time(context, format_string):return datetime.datetime.now().strftime(format_string)
在模板中使用时:
当前时间:{% custom_format_time "%Y-%m-%d %H:%M:%S" %}
逻辑处理:
- 标签的逻辑通常在标签函数内部,可以执行复杂的数据处理。例如,根据多个条件返回不同的输出:
@register.simple_tag
def check_status(status_list, condition):for status in status_list:if condition(status):return statusreturn "未找到匹配的条件"
3. 标签的渲染与输出控制
渲染与输出:
- 标签的输出通常是HTML或其他格式的数据,但也可以是纯文本或其他数据类型。例如,
current_time
标签返回的是字符串。
输出控制:
- 有时可能需要更精细的控制输出,比如过滤或转换数据。可以使用内置的
filter
和safe
选项。safe
标志用于标记输出不应该被HTML转义:
@register.filter(is_safe=True)
def my_custom_filter(input_string):# 对字符串进行处理,例如去除空格return input_string.strip()
在模板中使用:
非转义输出:{{ my_variable | my_custom_filter }}
结合视图与模板标签
1. 视图与模板标签的交互
视图传递数据给模板标签:
- 在Django中,视图负责处理业务逻辑并将数据传递给模板。这些数据可以通过模板上下文处理器传递给模板标签。例如:
def my_view(request):data = get_my_data()return render(request, 'my_template.html', {'my_data': data})
在模板中使用这些数据:
{% load my_custom_tags %}
{% my_custom_tag my_data %}
模板标签调用视图逻辑:
- 有时,模板标签可能需要调用视图中的逻辑。这可以通过在模板标签中调用视图函数或方法来实现,但通常不推荐这样做,因为它可能导致逻辑混乱和维护困难。
2. 动态生成模板标签内容
动态内容生成:
- 模板标签可以根据视图传递的数据动态生成内容。例如,一个根据用户权限动态显示菜单的标签:
@register.inclusion_tag('menu.html', takes_context=True)
def dynamic_menu(context):user = context['user']permissions = user.get_all_permissions()return {'permissions': permissions}
在menu.html
中:
{% for permission in permissions %}
<li><a href="#">{{ permission }}</a></li>
{% endfor %}
3. 视图中的模板标签逻辑
在视图中使用模板标签:
- 虽然模板标签主要用于模板中,但有时可能需要在视图中使用模板标签逻辑。这可以通过直接调用模板标签函数来实现,但通常不推荐,因为它可能导致代码重复和逻辑不清晰。
AD:漫画首页
示例:
- 假设有一个模板标签用于格式化日期,但在视图中需要使用相同的逻辑:
from django import templatedef my_view(request):t = template.Template('{{ date_value|my_date_format }}')c = template.Context({'date_value': datetime.datetime.now()})formatted_date = t.render(c)return render(request, 'my_template.html', {'formatted_date': formatted_date})
这种方法虽然可行,但通常建议将这种逻辑封装在视图或模型方法中,以保持代码的清晰和可维护性。
通过结合视图和模板标签,可以创建出既灵活又强大的Web应用程序,有效地处理复杂的业务逻辑和用户界面需求。
实战案例分析
1. 案例一:博客系统的自定义标签与过滤器
自定义标签:
- 博客系统中可能需要自定义标签来实现文章摘要、分页等功能。例如,一个
summary
标签可以截断文章内容并添加读取更多的链接:
@register.simple_tag
def summary(value, length=200):return '{}...'.format(value[:length])
在模板中使用:
{% load my_custom_tags %}
<p>{% summary article.content %}</p>
<p><a href="{% url 'article_detail' article.id %}"></a></p>
自定义过滤器:
- 自定义过滤器可以用于格式化日期、计算评论数等。例如,一个
count_comments
过滤器可以计算文章的评论数:
@register.filter
def count_comments(value):return value.comment_set.count()
在模板中使用:
{% load my_custom_filters %}
<p>{{ article|count_comments }} comments</p>
2. 案例二:电商平台的商品展示优化
自定义标签:
- 电商平台可能需要自定义标签来实现商品推荐、排行榜等功能。例如,一个
product_recommendation
标签可以根据用户历史浏览记录推荐商品:
@register.inclusion_tag('product_recommendation.html', takes_context=True)
def product_recommendation(context):user = context['user']recommended_products = get_recommended_products(user)return {'recommended_products': recommended_products}
在模板中使用:
{% load my_custom_tags %}
{% product_recommendation %}
自定义过滤器:
- 自定义过滤器可以用于格式化价格、计算库存等。例如,一个
format_price
过滤器可以格式化价格:
@register.filter
def format_price(value):return '${:,.2f}'.format(value)
在模板中使用:
{% load my_custom_filters %}
<p>{{ product.price|format_price }}</p>
3. 案例三:社交网络的用户动态处理
自定义标签:
- 社交网络可能需要自定义标签来实现用户动态、关注列表等功能。例如,一个
user_activity
标签可以显示用户最近的动态:
@register.inclusion_tag('user_activity.html', takes_context=True)
def user_activity(context):user = context['user']activities = get_user_activities(user)return {'activities': activities}
在模板中使用:
{% load my_custom_tags %}
{% user_activity user %}
自定义过滤器:
- 自定义过滤器可以用于格式化时间、计算粉丝数等。例如,一个
format_time
过滤器可以格式化时间:
@register.filter
def format_time(value):return value.strftime('%Y-%m-%d %H:%M:%S')
在模板中使用:
{% load my_custom_filters %}
<p>{{ activity.time|format_time }}</p>
通过在实际案例中应用自定义标签和过滤器,可以使代码更加模块化和可维护,提高开发效率和应用的可扩展性。
性能优化与最佳实践
1. 模板标签与过滤器的性能考量
-
模板标签和过滤器在处理大量数据时可能会影响性能。可以采用以下方法来优化:
- 避免在模板中执行复杂的计算和逻辑。
- 使用
simple_tag
和inclusion_tag
代替assignment_tag
和template_tag
,因为前者在渲染模板时可以提高性能。 - 使用缓存,将计算结果缓存在内存中,避免重复计算。
2. 代码组织与模块化
- 将代码分成模块,按功能组织代码,可以提高可读性和可维护性。
- 使用类和函数来封装逻辑,避免在视图函数中放入过多的代码。
- 遵循DRY原则,避免重复代码。
- 使用Django的
app
结构,将相关的代码放在同一个目录下。
3. 遵循Django社区的最佳实践
- 使用Django的ORM来操作数据库,避免直接使用SQL语句。
- 使用Django的内置验证机制,避免自己编写验证代码。
- 使用Django的
settings.py
文件来配置应用,避免在代码中硬编码配置。 - 使用Django的
DEBUG
模式来诊断问题,避免在生产环境中打印调试信息。 - 使用Django的
middleware
来处理HTTP请求和响应,避免在视图函数中处理重复的逻辑。
测试与调试
1. 自定义模板标签与过滤器的测试策略
- 对于自定义模板标签和过滤器,可以使用Django的
TestCase
类来编写测试用例。 - 在测试用例中,可以通过
django.template.context
来模拟模板上下文,然后调用自定义标签和过滤器进行测试。 - 可以使用
assertTemplateUsed
和assertContains
等方法来验证模板中是否正确使用了自定义标签和过滤器。
2. 使用Django测试框架进行测试
- Django提供了
unittest
模块,可以用来编写测试用例。 - 可以在应用目录下创建
tests.py
文件,编写测试用例。 - 使用
python manage.py test
命令来运行测试,确保应用的各个部分都能正常工作。
3. 调试技巧与常见问题解决
- 使用
print()
语句或logging
模块来输出调试信息,帮助定位问题。 - 使用Django的
DEBUG
模式,在出现异常时显示详细的错误信息。 - 使用Django的
pdb
调试器,在代码中插入断点进行调试。 - 可以使用
django-debug-toolbar
来查看请求的性能数据和SQL查询等信息。 - 常见问题解决包括数据库连接问题、URL配置错误、模板语法错误等,可以通过查看日志和调试信息来解决。
通过良好的测试和调试策略,可以确保应用的稳定性和可靠性,及时发现并解决潜在问题,提高开发效率和用户体验。
部署与维护
1. 部署包含自定义模板标签与过滤器的Django应用
- 在部署之前,确保所有的自定义模板标签和过滤器都已经在
INSTALLED_APPS
中注册。 - 使用
collectstatic
命令收集所有静态文件到指定目录,以便于静态文件服务器的分发。 - 确保服务器环境(如Nginx、Apache)配置正确,能够处理Django应用的请求。
- 使用WSGI或ASGI服务器(如Gunicorn、uWSGI、Daphne)来运行Django应用。
- 配置数据库连接,确保应用能够访问生产环境的数据库。
- 使用
migrate
命令应用数据库迁移,确保数据库结构与应用代码同步。
2. 维护与更新自定义组件
- 定期检查自定义组件的代码,确保其遵循最新的编码标准和最佳实践。
- 根据用户反馈和业务需求,对自定义组件进行功能更新和性能优化。
- 在更新自定义组件时,确保更新测试用例,以覆盖新功能和潜在的变更。
- 使用版本控制系统(如Git)来管理自定义组件的版本,确保可以回溯历史版本。
3. 版本控制与文档编写
- 使用版本控制系统来跟踪代码的变更,确保团队成员之间的协作顺畅。
- 为自定义组件编写详细的文档,包括安装指南、使用方法、API参考等。
- 定期更新文档,确保其与代码同步,帮助用户和开发者理解组件的功能和使用方法。
- 使用自动化工具(如Sphinx、Read the Docs)来生成和发布文档。
附录
Django资源与社区
- 官方文档:Django Documentation
- AD:首页 | 一个覆盖广泛主题工具的高效在线平台
- Django项目官网:Django Project
- Stack Overflow:Django标签下的问题与解答
- GitHub:Django的源码和社区贡献
- Reddit:r/django社区讨论
- AD:专业搜索引擎
- Django Forum:Django Forum
- Django Packages:Django Packages提供Django应用和工具的目录
常见问题解答
- **如何安装Django?**使用pip安装:
pip install Django
- **如何创建一个新的Django项目?**使用命令行:
django-admin startproject myproject
- **如何创建一个新的Django应用?**在项目目录下使用命令行:
python manage.py startapp myapp
- **如何运行Django开发服务器?**在项目目录下使用命令行:
python manage.py runserver
- **如何进行数据库迁移?**在项目目录下使用命令行:
python manage.py makemigrations
和python manage.py migrate
- **如何创建管理员用户?**在项目目录下使用命令行:
python manage.py createsuperuser
- **如何调试Django应用?**使用Django的日志系统,或者在代码中添加
print
语句,也可以使用调试工具如Pdb。
参考文献与推荐阅读
- 《Django for Beginners》 :Will Vincent著,适合初学者学习Django。
- 《Two Scoops of Django》 :Daniel Greenfeld和Audrey Feldroy合著,提供了Django最佳实践和技巧。
- 《Pro Django》 :Marty Alchin著,深入讲解Django的高级特性和开发技巧。
- 《Python Web Development with Django》 :Jeff Forcier, Paul Bissex, Wesley Chun合著,全面介绍使用Django进行Web开发。
- Django官方教程:Django官方教程,适合快速入门。
相关文章:

Django自定义模板标签与过滤器
title: Django自定义模板标签与过滤器 date: 2024/5/17 18:00:02 updated: 2024/5/17 18:00:02 categories: 后端开发 tags: Django模版自定义标签过滤器开发模板语法Python后端前端集成Web组件 Django模板系统基础 1. Django模板语言概述 Django模板语言(DTL&…...

k8s集群安装后CoreDNS 启动报错plugin/forward: no nameservers found
安装k8s过程中遇到的问题: 基本信息 系统版本:ubuntu 22.04 故障现象: coredns 报错:plugin/forward: no nameservers found 故障排查: #检查coredns的配置,发现有一条转发到/etc/resolv.conf的配置…...

AI图片过拟合如何处理?答案就在其中!
遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答8 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…...

0基础如何进入IT行业
目录 引言 一、了解IT行业 1.1 IT行业概述 1.2 IT行业的职业前景 二、选择适合的学习路径 2.1 自学 2.2 参加培训班 2.3 高等教育 三、学习基础技能 3.1 编程语言 3.2 数据结构与算法 3.3 计算机基础知识 四、实践与项目经验 4.1 开源项目 4.2 个人项目 4.3 实习…...

一键批量提取TXT文档前N行,高效处理海量文本数据,省时省力新方案!
大量的文本信息充斥着我们的工作与生活。无论是研究资料、项目文档还是市场报告,TXT文本文档都是我们获取和整理信息的重要来源。然而,面对成百上千个TXT文档,如何快速提取所需的关键信息,提高工作效率,成为了许多人头…...

Java-常见面试题收集(十六)
二十五 RocketMQ 1 消息队列介绍 消息队列,简称 MQ(Message Queue),它其实就指消息中间件,当前业界比较流行的开源消息中间件包括:RabbitMQ、RocketMQ、Kafka。(一个使用队列来通信的组件&…...

vue从入门到精通(四):MVVM模型
一,MVVM MVVM(Model–view–viewmodel)是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型,但是 Vue 的设…...

提供一个c# winform的多语言框架源码,采用json格式作为语言包,使用简单易于管理加载且不卡UI,支持“语言分级”管理
提供一个c# winform的多语言框架源码,采用json格式作为语言包,不使用resx资源,当然本质一样的,你也可以改为resx 一、先看下测试界面 演示了基本的功能:切换语言,如何加载语言,如何分级加载语…...

Docker常见命令
创建并运行容器 例子:docker安装运行mysql docker run -d \ --name mysql \ -p 3306:3306 \ -e TZAsia/Shanghai \ -e MYSQL_ROOT_PASSWORDroot \ -v /root/data/mysql/data:/var/lib/mysql \ -v /root/data/mysql/init:/docker-entrypoint-initdb.d \ -v /root/d…...

中科大6系+先研院+中南大学电子信息学院2023年保研经历
中科大6系 英语口语问题: What’s your research plan?Please introduce your project. 专业课问题: BPSK和QPSK每个字母代表的含义?QAM的星座图是什么样的?根据什么准则画成那个样子? 中科大先研院 …...

分布式理论--BASE
目录 是什么BASE 与 CAP,ACID 的区别BASE 和 Paxos 类共识算法的区别相关问题 是什么 BASE 理论是对 CAP 理论的进一步扩展主要强调在分布式系统中,为了获得更高的可用性和性能,可以放宽对一致性的要求,是对 CAP 中 AP 方案的一个…...

【计算机网络原理】浅谈应用层协议的自定义和传输层UDP协议的总结
˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

正则表达式及其应用
demo1: package 正则表达式;public class demo1 {public static void main(String[] args) {//只能是a b cSystem.out.println("a".matches("[abc]"));//true//前后校验字符个数需要一致System.out.println("ab".matches("[abc]"));/…...

VUE面试题(3)--vue常见面试题
1.vue优点 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。 …...

2024.05.24|生信早报【AI测试版】
植物再生领域重大突破 山农大团队发现植物“再生指挥官”REF1:中国科学院院士种康高度评价,认为这一发现对细胞分化与再生领域的基础科学研究和生物技术应用具有重大意义。 生物医药专业园区建设\n- 卫光生命科学园聚焦合成生物学、脑科学:…...

计算机毕业设计 | springboot药品库存追踪与管理系统 药店管理(附源码)
1,绪论 1.1 背景调研 如今药品调价频繁,且品种繁多,增加了药品销售定价的难度。药品来货验收登记中的审查有效期环节容易出错,错收过期或有效期不足的药品。 手工模式下的药品库存难以及时掌握,虽然采取了每日进行缺…...

Flink 对接 Hudi 查询数据,java代码编写
1.pom.xml文件需要引入下面包 <properties><flink.version>1.15.4</flink.version><hudi.version>0.13.1</hudi.version></properties><dependencies><dependency><groupId>org.apache.flink</groupId><artifa…...

计算机操作系统总结(1)
1操作系统的概念(定义)功能和目标 (1)什么是操作系统? (2)操作系统的功能和目标—作为系统资源的管理者 (3)操作系统的功能和目标—向上层提供方便易用的服务 (4)操作系…...

HTML5好看的通用网站模板源码
文章目录 1.设计来源1.1 主界面1.2 模板菜单1 界面1.3 模板菜单2 界面1.4 模板菜单3 界面1.5 下拉菜单1 界面1.6 下拉菜单2 界面1.7 模板菜单4 界面1.8 模板菜单5 界面1.9 界面底部 2.效果和源码2.1 动态效果2.2 源码目录2.3 源代码 源码下载 作者:xcLeigh 文章地址…...

AWS安全性身份和合规性之Inspector
Amazon Inspector 是一项漏洞管理服务,可持续扫描您的 AWS 工作负载,以查找软件漏洞和意外网络泄露。Amazon Inspector 会自动发现和扫描正在运行的亚马逊 EC2 实例、亚马逊弹性容器注册表 (Amazon ECR) Container Registry 中的容器映像,以及…...

mybatis plus 配置多数据源(数据源进行切换)
多数据源(数据源进行切换) AbstractRoutingDataSource 根据用户定义的规则选择当前的数据源,这样我们可以在执行查询之前,设置使用的数据源。实现可动态路由的数据源,在每次数据库查询操作前执行。它的抽象方法 determineCurrentLookupKey()…...

Docker-Android安卓模拟器本地部署并实现远程开发测试
文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器,并结合cpolar内网穿透工具实现公网远程访问本地…...

vue-封装上下(垂直方向)轮播
需求:没有找到特别好的上下轮播插件-所以自己写了一个简单的demo 一.上下平滑轮播-移入停止-移出继续轮播 <!--* 消息滚动 --> <template><div class"news"><div id"roll" class"InfoBox" mouseover"thi…...

海外私人IP和原生IP有什么区别,谁更有优势?
一、什么是海外私人IP?什么是原生IP? 1、海外私人IP: 海外私人IP是由专门的服务提供商提供的IP地址,这些IP地址通常与特定地理位置或国家相关联。这些IP地址独享私人而不用与其他用户共享。海外私人IP广泛应用与跨境电商中&#x…...

主流容器工具对比以及重点推荐学习的企业级工具
常见的主流容器工具包括但不限于以下几种: 1. Docker: Docker 是最流行的容器平台之一,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后可以在任何支持Docker的系统上运行。 2. Kubernetes:Kubern…...

国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线编辑word文件,同时保存数据和文件
PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。 在OA办公、文档流转等各个Web系统中,实现最简单的…...

个人感觉对Material设计有用的几个网址
(一) Modular and customizable Material Design UI components for Android GIthub: material-components-android (二) 学习Material设计 Material Design (三) 用于创建Material主题,支持导出多种格式 material-theme-builder...

ubuntu18 安装sudo
ubuntu18 安装sudo 在Ubuntu 18.04上安装sudo通常是不必要的,因为sudo是Ubuntu及其衍生版本的基本包之一,默认情况下就已经安装。如果出于某种原因,sudo没有预装或者你需要升级到最新版本,你可以通过以下命令安装或更新它&#x…...

【力扣一轮】202.快乐数 1.两数之和
202.快乐数 力扣链接 代码随想录链接 思路 看到这一题没思路,直接看题解。 发现其中一个难点在于“无限循环”,这个字眼可以转换成退出条件。退出条件就有两种,一种是这个数字是快乐数,一种是这个数字不是快乐数。 如果是快…...

Vue小程序项目知识积累(二)
1.wx.reLaunch(Object object) 关闭所有页面,打开到应用内的某个页面。 wx.reLaunch({url:/pages/positons/index}) 参数说明: 属性类型默认值必填说明urlstring是需要跳转的应用内页面路径 (代码包路径),路径后可以带参数。参数与路径之…...