django基础学习

django基础学习

文章目录

  • django基础学习
    • django框架
      • `urls.py`将请求发送到正确的视图
      • `views.py`处理请求
      • `models.py`定义数据模型
      • 根据`models`查询数据
      • `HTML模板`呈现数据
    • Django项目结构
      • 创建虚拟环境下载django
      • 创建站点
      • 创建应用
      • `settings.py`项目设置
    • 通用类别视图
    • 会话框架
    • 身份验证视图
    • 使用表单
    • 使用表单
    • 测试

django框架

img

  • URLs: 虽然可以通过单个功能来处理来自每个 URL 的请求,但是编写单独的视图函数来处理每个资源是更加可维护的。URL 映射器用于根据请求 URL 将 HTTP 请求重定向到相应的视图。URL 映射器还可以匹配出现在 URL 中的字符串或数字的特定模式,并将其作为数据传递给视图功能。
  • View: 视图 是一个请求处理函数,它接收 HTTP 请求并返回 HTTP 响应。视图通过模型访问满足请求所需的数据,并将响应的格式委托给 模板。
  • Models: 模型 是定义应用程序数据结构的 Python 对象,并提供在数据库中管理(添加,修改,删除)和查询记录的机制。
  • Templates: 模板 是定义文件(例如 HTML 页面)的结构或布局的文本文件,用于表示实际内容的占位符。一个视图可以使用 HTML 模板,从数据填充它动态地创建一个 HTML 页面模型。可以使用模板来定义任何类型的文件的结构; 它不一定是 HTML!

urls.py将请求发送到正确的视图

URL 映射器通常存储在名为 urls.py 的文件中。在下面的示例中,mapper(urlpatterns)定义了特定 URL 模式 和相应视图函数之间的映射列表。如果接收到具有与指定模式匹配的 URL(例如 r’^$',下面)的 HTTP 请求,则将调用 相关联的视图功能(例如 views.index)并传递请求。

from django.urls import path
urlpatterns = [
    path(r'^$', views.index),
    path(r'^([0-9]+)/$', views.best),
]

在Django中,捕获 URL 中的特定部分(也称为路径参数或标记)是通过在 URL 模式中使用尖括号<>来完成的。常见的捕获标记有:

  • <int:pk>: 匹配一个整数,并将其作为pk参数传递给视图函数。
  • <slug:slug_text>: 匹配一个字母、数字、连字符或下划线组成的字符串,并将其作为slug_text参数传递给视图函数。
  • <str:my_string>: 匹配一个字符串,并将其作为my_string参数传递给视图函数。
  • <path:my_path>: 匹配一个路径(包含多个部分的字符串),并将其作为my_path参数传递给视图函数。
from django.urls import path
from . import views

urlpatterns = [
    path('books/<int:pk>/', views.book_detail, name='book-detail'),
    path('authors/<slug:author_slug>/', views.author_detail, name='author-detail'),
]

在这个例子中,<int:pk><slug:author_slug>是捕获标记,分别匹配一个整数和一个slug格式的字符串,并将其作为pkauthor_slug参数传递给相应的视图函数。

views.py处理请求

在Django中,views.py文件包含了处理请求的视图函数。这些视图函数负责接收请求,处理数据并返回HTTP响应。

一个基本的视图函数通常会接收一个HttpRequest对象作为参数,并返回一个HttpResponse对象作为响应。例如:

from django.http import HttpResponse

def my_view(request):
    # 处理请求的逻辑
    return HttpResponse("Hello, this is the response!")

views.py中的视图函数可能包含以下逻辑:

  1. 接收请求参数:request对象(Django中,request对象是通过框架自动提供的)中获取GET或POST参数、路径参数(如果有的话)等。
  2. 处理业务逻辑: 执行与应用程序逻辑相关的操作,可能包括数据库查询、计算、验证等。
  3. 生成响应: 创建一个HttpResponse对象或其他适当的响应类型,将结果返回给用户。
  4. 返回响应: 将生成的响应返回给用户,响应可以是HTML页面、JSON数据、重定向或其他HTTP响应类型。

常用的方法

render()HttpResponse都用于构建HTTP响应,但它们有一些不同之处:

  • render(): 这是Django的一个辅助函数,它用于渲染模板并返回一个HTTP响应。render()接受request作为第一个参数,指定要渲染的模板名称作为第二个参数,还可以选择性地传递上下文参数。它会将模板和上下文数据合并,然后返回一个完整的HTTP响应对象。例如,你可以在视图中使用render()来渲染一个HTML模板:

    from django.shortcuts import render
    
    def my_view(request):
        # 一些数据处理...
        context = {'key': 'value'}
        return render(request, 'template_name.html', context)
    
    
  • HttpResponse: 这是Django的HTTP响应类。你可以使用HttpResponse手动创建HTTP响应,为其指定内容、状态码和其他HTTP头。当你想要直接返回文本、JSON数据或其他非HTML响应时,可以使用HttpResponse。例如:

    from django.http import HttpResponse
    import json
    
    def my_json_view(request):
        data = {'key': 'value'}
        json_data = json.dumps(data)
        return HttpResponse(json_data, content_type='application/json')
    
    

models.py定义数据模型

Django Web 应用程序通过被称为模型的 Python 对象来管理和查询数据。模型定义存储数据的结构,包括字段类型 以及字段可能的最大值,默认值,选择列表选项,文档帮助文本,表单的标签文本等。模型的定义与底层数据库无关 -你可以选择其中一个作为项目设置的一部分。一旦你选择了要使用的数据库,你就不需要直接与之交谈 - 只需编写模型结构和其他代码,Django 可以处理与数据库通信的所有辛苦的工作

创建 Django 中的模型涉及以下步骤:

  1. 定义模型类: 在你的应用程序的 models.py 文件中定义模型类。每个模型类都是一个继承自 django.db.models.Model 的 Python 类。

  2. 定义字段: 在模型类中定义字段,这些字段将成为数据库表中的列。Django 提供了许多不同类型的字段,例如 CharFieldIntegerFieldDateField 等,用于存储不同类型的数据。

  3. 定义元数据(可选): 你可以在模型类中定义一些元数据,例如数据库表名、排序方式等。

  4. 创建迁移: 使用 Django 的管理工具创建迁移文件。迁移文件包含了数据库模式的变更,通过执行迁移文件,可以将这些变更应用到数据库中。

  5. 应用迁移: 执行应用程序的迁移命令,将模型更改应用到数据库中。

    # 生成迁移文件
    python manage.py makemigrations
    # 应用迁移
    python manage.py migrate
    

根据models查询数据

在 Django 中,当你使用模型管理器方法进行查询时,Django 会根据你的查询转换为相应的 SQL 语句来执行数据库操作。以下是一些常见的查询方法以及对应的 SQL 查询:

  1. 获取所有对象:

    all_books = Book.objects.all() # SELECT * FROM yourapp_book;
    
  2. 根据条件过滤对象:

    filtered_books = Book.objects.filter(author='Author Name')
    # SELECT * FROM yourapp_book WHERE author = 'Author Name';
    
  3. 获取单个对象:

    book = Book.objects.get(author='Author Name')
    # SELECT * FROM yourapp_book WHERE author = 'Author Name' LIMIT 1;
    book = Book.objects.get(pk=1)
    # SELECT * FROM yourapp_book WHERE id = 1 LIMIT 1;
    
  4. 其他查询方法

    books = Book.objects.exclude(author='Author Name')
    # SELECT * FROM yourapp_book WHERE NOT (author = 'Author Name');
    
    books = Book.objects.order_by('title')
    # SELECT * FROM yourapp_book ORDER BY title ASC;
    

最后查询到的是对象实例

HTML模板呈现数据

HTML模板在Django中使用了特殊的模板语言,这些语言元素可以嵌入HTML中,实现动态的、基于数据的渲染。以下是HTML模板中常用的几个特殊语法:

  1. 模板标签:使用 {% %} 包裹起来的代码块,用于执行逻辑操作,如循环、条件判断等。

    {% if condition %}
        ... some HTML code ...
    {% endif %}
    
  2. 变量:使用 {{ }} 包裹起来的变量名,用于在模板中显示动态数据。

    <p>Book Title: {{ book.title }}</p>
    
  3. 模板注释:使用 {# #} 包裹起来的注释,不会在最终的渲染结果中显示。

    {# This is a comment #}
    
  4. 模板过滤器:使用 | 可以对变量进行过滤或操作。

    djangoCopy code
    {{ value|filter }}
    
  5. 模板继承:使用 {% extends %}{% block %} 可以实现模板之间的继承和覆盖。

    {% extends 'base.html' %}
    
    {% block content %}
        ... content specific to this template ...
    {% endblock %}
    
  6. 模板标签库:使用 {% load %} 加载自定义的模板标签或过滤器库。

    djangoCopy code
    {% load custom_tags %}
    

这些特殊的模板语法允许在HTML模板中嵌入逻辑、变量和控制结构,使得Django的模板可以根据数据动态生成页面内容。

数据由视图传递到模板,模板提取数据进行渲染

Django项目结构

创建虚拟环境下载django

mkdir myproject
cd myproject
# 创建虚拟环境
python3 -m venv myenv
# Linux下激活虚拟环境
source myenv/bin/activate
# 退出虚拟环境
deactivate
# 安装django
pip3 install django -i https://pypi.tuna.tsinghua.edu.cn/simple

创建站点

# 创建新项目
django-admin startproject locallibrary

此时会创建如下文件夹结构

locallibrary/
    manage.py
    locallibrary/
        settings.py
        urls.py
        wsgi.py

manage.py 是 Django 项目的命令行工具,用于执行多种任务,包括但不限于:

  1. 运行开发服务器:启动 Django 开发服务器以在本地运行项目。python3 manage.py runserver

  2. 创建应用程序:通过 python manage.py startapp app_name 创建一个新的应用程序。

  3. 执行数据库迁移:管理数据库模型变更并将其应用到数据库中。

    python3 manage.py makemigrations
    python3 manage.py migrate
    
  4. 创建超级用户:创建可以登录 Django 后台管理界面的管理员账号。python manage.py createsuperuser

  5. 收集静态文件:将静态文件(如 CSS、JavaScript 文件等)收集到一个位置,以便部署。python3 manage.py collectstatic

  6. 运行单元测试:执行项目中定义的单元测试。python manage.py test

  7. 查看 Django 命令列表:通过 python manage.py helppython manage.py 查看所有可用的 Django 命令列表。

locallibrary 项目的子文件夹是整个网站的进入点:

  • settings.py 包含所有的网站设置。这是可以注册所有创建的应用的地方,也是静态文件,数据库配置的地方,等等。
  • urls.py 定义了网站 url 到 view 的映射。虽然这里可以包含所有的 url,但是更常见的做法是把应用相关的 url 包含在相关应用中.
  • wsgi.py 帮助 Django 应用和网络服务器间的通讯。你可以把这个当作模板。

创建应用

python3 manage.py startapp catalog

在此之后的文件夹结构如下:

locallibrary/
    manage.py
    locallibrary/
    catalog/
        admin.py
        apps.py
        models.py
        tests.py
        views.py
        __init__.py
        migrations/

其他一些说明:

  • admin.py 文件中,你可以注册模型以便在 Django 自带的管理界面中对这些模型进行管理和操作。这个文件用于配置管理员后台可以访问和管理的模型。
  • apps.py 文件的主要作用是提供关于应用程序的元数据信息,方便 Django 框架使用和展示。
  • tests.py 是 Django 应用程序中用于编写测试的文件。在这个文件中,你可以编写各种测试来验证你的应用程序的不同部分,确保它们按预期运行。
  • 一个migration文件夹,用来存储“migrations”——当你修改你的数据模型时,这个文件会自动升级你的数据库。
  • _init_.py — 一个空文件,Django/Python 会将这个文件作为Python 包并允许你在项目的其他部分使用它。

settings.py项目设置

  1. 注册应用

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'your_app.apps.Your_appConfig',
    ]
    
    
  2. 配置数据库

    默认使用SQLite

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    

    使用Mysql

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'your_db_name',
            'USER': 'your_username',
            'PASSWORD': 'your_password',
            'HOST': 'localhost',
            'PORT': '',
        }
    }
    

    数据库之前的数据迁移

    python manage.py dumpdata > data.json # 导出SQLite数据
    python manage.py loaddata data.json # 导入数据到MySQL
    
  3. 静态文件配置

    STATIC_URL = '/static/' #  定义静态文件的URL前缀。
    STATICFILES_DIRS = [BASE_DIR / "static"] # 指定了额外的静态文件目录
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') #  在collectstatic命令运行后,用于收集所有静态文件的文件夹路径。
    STATICFILES_FINDERS # 定义了查找静态文件的方式
    
  4. 模板配置

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                '/path/to/your/templates',  # 指定额外的模板目录
            ],
            'APP_DIRS': True,  # 在应用程序的 templates 目录中查找模板
            # 其他设置...
        },
    ]
    
  5. 其他配置

    TIME_ZONE = 'Asia/Shanghai' # 时区配置
    DEBUG = True # 这个会在 debug 日志里输出错误信息,而不是输入 HTTP 的返回码。在生产环境中,它应设置为 false,因为输出的错误信息会帮助想要攻击网站的人。
    

通用类别视图

Django提供了通用类视图来简化开发常见的 Web 功能,其中之一是通用类别视图。这些类别视图可用于快速构建常见的应用程序组件,如列表、详情页等。常见的通用类别视图包括:

  1. ListView: 显示对象列表的视图,例如显示所有书籍或文章的列表。
  2. DetailView: 展示单个对象详细信息的视图,例如书籍的详细信息或文章的内容。
  3. CreateView: 用于创建新对象的视图,例如创建新书籍或新文章。
  4. UpdateView: 用于更新现有对象的视图,例如编辑现有书籍或文章的视图。
  5. DeleteView: 用于删除对象的视图,例如删除书籍或文章。

这些类别视图旨在减少代码量,通过约定俗成的命名和配置,提供了内置的处理逻辑。通过组合这些视图类和提供一些配置参数,你可以快速创建功能完善的视图。

常用参数

  1. model: 指定视图所使用的模型类。
  2. template_name: 指定用于渲染视图的模板名称。
  3. context_object_name: 指定传递给模板的上下文变量的名称。
  4. queryset: 自定义视图使用的查询集。
  5. paginate_by: 对于 ListView,指定每页显示的对象数量。
  6. get_context_data(): 可用于自定义向模板发送的上下文数据。

常用方法

  1. get_queryset(): 可用于覆盖查询集以自定义视图的数据。
  2. get_context_data(): 用于添加额外的上下文数据到模板渲染中。
  3. get_object(): 用于获取单个对象实例。
  4. form_valid(): 用于在表单提交成功后执行自定义逻辑。
  5. get_success_url(): 用于在视图成功后重定向到的 URL。
from django.views.generic import ListView, DetailView
from .models import YourModel

class YourModelListView(ListView):
    model = YourModel
    template_name = 'your_template.html'

class YourModelDetailView(DetailView):
    model = YourModel
    template_name = 'your_template.html'

会话框架

会话是 Django(以及大多数 Internet)用于跟踪站点和特定浏览器之间“状态”的机制。

启动会话

INSTALLED_APPS = [
    ...
    'django.contrib.sessions',
    ....

MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    ....

使用会话

# Get a session value by its key (e.g. 'my_car'), raising a KeyError if the key is not present
my_car = request.session['my_car']

# Get a session value, setting a default if it is not present ('mini')
my_car = request.session.get('my_car', 'mini')

# Set a session value
request.session['my_car'] = 'mini'

# Delete a session value
del request.session['my_car']

# 假设你修改了会话数据中的一些内容
request.session['my_car']['wheels'] = 'new_wheels'

# 将会话标记为已修改
request.session.modified = True

如果你对会话数据做了更改,并希望这些更改被保存,你可以使用 modified 标志来手动告知 Django 会话已被修改。

身份验证视图

可以使用 Django 内置的身份验证视图类来实现这些功能。下面是示例代码:

from django.urls import path
from django.contrib.auth.views import (
    LoginView, LogoutView, PasswordChangeView, PasswordChangeDoneView,
    PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView,
    PasswordResetCompleteView
)

urlpatterns = [
    path('accounts/login/', LoginView.as_view(), name='login'),
    path('accounts/logout/', LogoutView.as_view(), name='logout'),
    path('accounts/password_change/', PasswordChangeView.as_view(), name='password_change'),
    path('accounts/password_change/done/', PasswordChangeDoneView.as_view(), name='password_change_done'),
    path('accounts/password_reset/', PasswordResetView.as_view(), name='password_reset'),
    path('accounts/password_reset/done/', PasswordResetDoneView.as_view(), name='password_reset_done'),
    path('accounts/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    path('accounts/reset/done/', PasswordResetCompleteView.as_view(), name='password_reset_complete'),
    # 其他 URL 配置...
]

这些路径配置了与 Django 内置的身份验证视图相关的 URL,并将每个视图与其对应的名称关联起来。使用这些视图类,你可以快速地设置登录、注销、密码更改和密码重置等功能。

这些身份验证视图使用 Django 的模板引擎渲染模板。默认情况下,它们使用以下模板:

  • registration/login.html 用于登录页面
  • registration/logged_out.html 用于注销确认页面
  • registration/password_change_form.html 用于密码更改表单页面
  • registration/password_change_done.html 用于密码更改完成页面
  • registration/password_reset_form.html 用于密码重置表单页面
  • registration/password_reset_done.html 用于密码重置确认页面
  • registration/password_reset_confirm.html 用于密码重置确认页面
  • registration/password_reset_complete.html 用于密码重置完成页面

你可以自定义这些模板,或者通过指定额外的参数template_name来使用不同的模板文件:

# 例如,更改登录视图的模板:
path('accounts/login/', LoginView.as_view(template_name='myapp/custom_login.html'), name='login'),

这将告诉 Django 使用myapp/custom_login.html作为登录页面的模板。同样的方法可以应用于其他身份验证视图,以便你可以为每个视图选择不同的模板。

使用表单

ne.html` 用于密码更改完成页面

  • registration/password_reset_form.html 用于密码重置表单页面
  • registration/password_reset_done.html 用于密码重置确认页面
  • registration/password_reset_confirm.html 用于密码重置确认页面
  • registration/password_reset_complete.html 用于密码重置完成页面

你可以自定义这些模板,或者通过指定额外的参数template_name来使用不同的模板文件:

# 例如,更改登录视图的模板:
path('accounts/login/', LoginView.as_view(template_name='myapp/custom_login.html'), name='login'),

这将告诉 Django 使用myapp/custom_login.html作为登录页面的模板。同样的方法可以应用于其他身份验证视图,以便你可以为每个视图选择不同的模板。

使用表单

测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/280679.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索 Pinia:简化 Vue 状态管理的新选择(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

项目中使用Java中List.subList()的注意事项

使用介绍 在Java中&#xff0c;subList是List接口的一个方法&#xff0c;用于获取原始列表的子列表 方法的声明如下 List<E> subList(int fromIndex, int toIndex);fromIndex&#xff1a;起始索引&#xff08;包括&#xff09;toIndex&#xff1a;结束索引&#xff08…

dash 中的模式匹配回调函数Pattern-Matching Callbacks 8

模式匹配 模式匹配回调选择器 MATCH、ALL 和 ALLSMALLER 允许您编写可以响应或更新任意或动态数量组件的回调函数。 此示例呈现任意数量的 dcc. Dropdown 元素&#xff0c;并且只要任何 dcc. Dropdown 元素发生更改&#xff0c;就会触发回调。尝试添加几个下拉菜单并选择它们的…

Java项目:101SpringBoot仓库管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 仓库管理系统基于SpringBootMybatis开发&#xff0c;系统使用shiro框架做权限安全控制&#xff0c;超级管理员登录系统后可根据自己的实际需求配角色&…

(四)开启定时器2中断

文章目录 定时器2中断的开启借用isp软件生成代码下面进行定时器2中断开启 最终开启定时器2中断的代码定时器2中断服务函数的编写查手册得到定时器2中断查询次序号查手册得次序号为12通过公式计算 中断服务函数编写 结合之前学的点亮LED现象演示 定时器2中断的开启 借用isp软件…

【开源】基于Vue+SpringBoot的二手车交易系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块2.3 车辆预约管理模块2.4 车辆预定管理模块2.5 车辆留言板管理模块2.6 车辆资讯管理模块 三、系统设计3.1 E-R图设计3.2 可行性分析3.2.1 技术可行性分析3.2.2 操作可行性3.2.3 经济…

大模型推理部署:LLM 七种推理服务框架总结

自从ChatGPT发布以来&#xff0c;国内外的开源大模型如雨后春笋般成长&#xff0c;但是对于很多企业和个人从头训练预训练模型不太现实&#xff0c;即使微调开源大模型也捉襟见肘&#xff0c;那么直接部署这些开源大模型服务于企业业务将会有很大的前景。 本文将介绍七中主流的…

git基础概念和常用命令(日常开发收藏备用)

目录 ### 常用命令 ### 远程仓库与克隆 ### 分支管理 ### 子模块&#xff08;Submodule&#xff09; ### 其他高级操作 ### 交互式暂存&#xff08;Interactive Staging&#xff09; ### cherry-pick ### rebase ### reflog与reset ### 子树合并&#xff08;Subtree …

Linux操作系统( YUM软件仓库技术 )

镜像文件的回环挂载&#xff08;把iso镜像文件释放成系统安装光盘&#xff09;foundation0上操作 回环挂载的用法&#xff1a; du -sh 对象名 //估算文件&#xff08;一切对象皆文件&#xff09;大小 !$ //上一条命令的最后一个参数 新创建的挂载点目录是空白目录 挂载&#xf…

【OpenCV】OpenCV 4.9.0 正式发布

​ 开源计算机视觉库 OpenCV 4.9.0 已于2023年12月29日正式发布。 此次发布有DNN模块对ONNX Attention、Einsum等层的支持、新的fastGEMM实现、transformers的实验性支持等诸多亮点。 OpenCV 4.9.0 更新内容&#xff1a; &#xff08;来自OpenCV中国团队以及中国社区的贡献…

【Web】vulhub-httpd apache解析漏洞复现(1)

目录 ①CVE-2017-15715 ②apache_parsing_vulnerability ①CVE-2017-15715 贴出源码&#xff1a; <?php if(isset($_FILES[file])) {$name basename($_POST[name]);$ext pathinfo($name,PATHINFO_EXTENSION);if(in_array($ext, [php, php3, php4, php5, phtml, pht]))…

Linux:apache优化(4)—— 隐藏版本号

运行环境 yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre gcc make zlib-devel 源码包配置 ./configure --prefix/usr/local/httpd --enable-cgi --enable-rewrite --enable-so --enabl…

cleanmymac这个软件怎么样?值不值得下载

cleanmymac是我必装的mac端清理软件&#xff0c;界面简洁好看&#xff0c;完美适配mac系统&#xff0c;文件清理的速度、精度都比较优秀&#xff0c;还是比较不错的呢。cleanmymac作为一款第三方清洁应用程序&#xff0c;具有专业完整的清理功能&#xff0c;包括释放内存、一键…

【办公技巧】怎么批量提取文件名到excel

Excel是大家经常用来制作表格的文件&#xff0c;比如输入文件名&#xff0c;如果有大量文件需要输入&#xff0c;用张贴复制或者手动输入的方式还是很费时间的&#xff0c;今天和大家分享如何批量提取文件名。 打开需要提取文件名的文件夹&#xff0c;选中所有文件&#xff0c…

HTML---JavaScript基础

文章目录 目录 文章目录 本章目标 一.JavaScript基础 概述 特点 JavaScript 基本机构 语法 网页中引用JavaScript的方式 二. JavaScript核心语法 变量 ​编辑 数据类型 数组 练习 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行…

[Angular] 笔记 22:ElementRef

chatgpt: ElementRef 是 Angular 中的一个类&#xff0c;它用于包装对 DOM 元素的引用。它允许开发者直接访问与 Angular 组件关联的宿主 DOM 元素。 当在 Angular 中需要直接操作 DOM 元素时&#xff0c;可以使用 ElementRef。通常情况下&#xff0c;最好避免直接操作 DOM&a…

【Transformer】深入理解Transformer模型1——初步认识了解

前言 Transformer模型出自论文&#xff1a;《Attention is All You Need》 2017年 近年来&#xff0c;在自然语言处理领域和图像处理领域&#xff0c;Transformer模型都受到了极为广泛的关注&#xff0c;很多模型中都用到了Transformer或者是Transformer模型的变体&#xff0…

OSPF的DR与BDR-新版(16)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.3 配置R3的IP 1.4 配置R4的IP 1.5 检测R1与R4连通性 1.6 检测R1与R2连通性 1.7 检测R1与R3连通性 2.搭建基本的OSPF网络 2.1 配置R1 OSPF 2.2 配置R2 OSPF 2.3 配置R3 OSPF 2.4 配置R4 OSPF…

前端八股文(工程化篇)

目录 1.常用的git命令有哪些&#xff1f; 2.git rebase和git merge的区别 3.有哪些常见的Loader和Plugin&#xff1f; 4.webpack的构建流程 5.bundle,chunk,module是什么&#xff1f; 6.如何提高webpack的打包速度 7.vite比webpack快在哪里 8.说一下你对Monorepo的理解 …

C语言函数篇——strcat()函数

strcat()函数介绍&#xff1a; strcat()函数是C语言中用于连接两个字符串的函数。它将第二个字符串连接到第一个字符串的末尾&#xff0c;并返回第一个字符串的地址。 strcat()函数的语法&#xff1a; char *strcat(char *dest, const char *src); 其中&#xff0c;dest是目标…