Django视图与路由:打造你的网络帝国

Hello,我是阿佑,上期给大家讲了 Django ORM魔法:用Python代码召唤数据库之灵!
今天将带大家深入探讨了视图的工作原理、如何编写高效的函数视图和类视图,以及如何巧妙地利用URL路由来提升应用的用户体验和可维护性。通过实际案例和代码示例,揭示了Django视图与路由设计的艺术,帮助你快速从新手成长为Django高手。
一起来开启你的Django之旅,创造令人瞩目的Web杰作吧!

文章目录

      • 1. 视图的基本概念
        • 1.1 视图的作用与原理
        • 1.2 请求与响应处理流程
        • 1.3 视图函数的参数与返回值
      • 2. 函数视图与类视图
        • 2.1 函数视图的实现
        • 2.2 类视图基础
        • 2.3 Mixins与通用视图的应用
        • 2.4 函数视图与类视图的对比选择
      • 3. URLconf 和路由系统
        • 3.1 URLconf 的配置过程
        • 3.2 路由匹配规则详解
        • 3.3 URL 参数传递方法
      • 4. 正则表达式与路径转换器
        • 4.1 正则表达式在路由中的应用
        • 4.2 Django 内置路径转换器介绍
        • 4.3 自定义路径转换器的创建与使用
      • 5. URL 路由的最佳实践
        • 5.1 路由组织结构与命名空间
        • 5.2 URL包含与模块化设计
        • 5.3 URL 跳转与反向解析策略
      • 6. 结论
        • 6.1 Django 视图与 URL 路由的核心要点回顾
        • 6.2 实践中提升应用可维护性的建议
    • 参考文献

在这里插入图片描述

1. 视图的基本概念

1.1 视图的作用与原理

想象一下,你走进一家餐厅,服务员会根据你的点餐需求,为你准备相应的食物。在Django的世界里,视图就扮演着服务员的角色。当用户通过浏览器发起请求时,视图会根据请求的内容,决定如何响应——是展示一个网页,还是返回一个错误信息,或者执行一些后台操作。

视图是Django应用的核心,它们是处理用户请求并返回响应的函数或类。每个视图都对应一个特定的URL,当用户访问这个URL时,Django就会调用相应的视图来处理请求。

1.2 请求与响应处理流程

这个过程就像是一次精彩的舞台剧。当用户(观众)点击一个链接或提交一个表单(购票)时,他们的请求(入场)就会通过Django的URL分发器(检票员)传递给相应的视图(演员)。视图根据请求的内容(剧情需求)进行处理,可能是查询数据库(准备道具),处理数据(排练),最后生成一个HTML页面(表演)作为响应发送回用户。

1.3 视图函数的参数与返回值

视图函数可以接收多种参数,这些参数就像是演员们在表演前需要了解的剧情细节。最常见的参数是request对象,它包含了用户请求的所有信息。此外,视图还可以接收通过URL传递的参数,比如idname,这些参数帮助视图了解用户的特定需求。

至于返回值,视图通常会返回一个HttpResponse对象,它包含了发送给用户的响应内容。这就像是演员在舞台上的表演,最终呈现给观众的是一场视觉盛宴。

现在,我们已经搭建起了视图的基本概念框架,就像是一个剧本的大纲。接下来,我们将深入探讨函数视图与类视图,就像挑选演员一样,为每个场景选择合适的表演者。但在此之前,让我们先休息一下,为接下来的精彩内容养足精神!

2. 函数视图与类视图

2.1 函数视图的实现

想象一下,你有一个魔法盒子,你只需要告诉它你想要什么,它就会变出你想要的东西。在Django的世界里,函数视图就像是这个魔法盒子。它是一个简单的Python函数,接收request对象作为参数,然后根据请求的内容返回一个响应。

def my_view(request):# 处理请求,比如查询数据库,处理数据等return HttpResponse("你好,世界!")

这个例子中,my_view函数就是一个函数视图,当用户访问与之关联的URL时,Django就会调用这个函数,并返回"你好,世界!"。

2.2 类视图基础

现在,让我们来谈谈类视图。如果你认为函数视图是魔法盒子,那么类视图就像是魔法学院。类视图提供了一个更加结构化和灵活的方式来处理请求。它们是继承自View类的Python类,可以包含多个方法来处理不同类型的HTTP请求。

from django.views import View
from django.http import HttpResponseclass MyView(View):def get(self, request):# 处理GET请求return HttpResponse("欢迎来到魔法学院!")def post(self, request):# 处理POST请求return HttpResponse("你提交了数据!")

在这个例子中,MyView类是一个类视图,它有两个方法:getpost,分别用来处理GET和POST请求。

2.3 Mixins与通用视图的应用

Mixins就像是魔法学院里的各种魔法课程,它们提供了一些特定的功能,可以被多个视图类所使用。Django的通用视图(如ListViewDetailView)就像是这些魔法课程的集合,它们实现了一些常见的视图模式,可以大幅简化我们的代码。

from django.views.generic import ListView
from .models import MyModelclass MyModelListView(ListView):model = MyModel

这个例子中的MyModelListView是一个通用视图,它自动为MyModel模型提供列表页面。

2.4 函数视图与类视图的对比选择

选择函数视图还是类视图,就像是选择是去魔法盒子还是去魔法学院。函数视图简单直接,适合快速实现简单的需求。而类视图则更加强大和灵活,适合构建复杂的应用。

  • 函数视图:快速、简单,适合轻量级的任务。
  • 类视图:强大、灵活,适合复杂的应用和重用代码。

最终,选择哪一种,取决于你的具体需求和个人偏好。就像选择魔法盒子还是魔法学院,关键在于你想要达到什么样的魔法效果。

现在,我们已经了解了函数视图和类视图的魔力,接下来,我们将探索URLconf和路由系统的奥秘,就像绘制一张魔法地图,指引我们到达每一个魔法场景。准备好了吗?让我们继续这场魔法之旅!

3. URLconf 和路由系统

3.1 URLconf 的配置过程

在Django的世界里,URLconf就像是一张魔法地图,它指引着用户(冒险者)如何找到他们想去的地方(视图)。这张地图由一系列的URL模式(路径)和视图(目的地)组成,它们告诉Django如何将用户请求的URL映射到相应的视图函数。

想象一下,你手中有一张藏宝图,上面标记了各种神秘的地点和通往这些地点的秘密通道。在Django中,你的urls.py文件就扮演着这张藏宝图的角色。你需要在这个文件中定义一系列的path()re_path()函数,每个函数都对应着一个特定的URL模式和视图。

# urls.py
from django.urls import path
from . import viewsurlpatterns = [path('hello/', views.hello_world, name='hello'),path('calculator/', views.calculator, name='calculator'),
]

在这个例子中,我们定义了两个路径:一个是通往“hello_world”视图的“hello”路径,另一个是通往“calculator”视图的“calculator”路径。

3.2 路由匹配规则详解

路由匹配就像是一场寻宝游戏,Django会根据用户请求的URL,按照你在URLconf中定义的顺序,逐个尝试匹配这些路径。一旦找到匹配的路径,就会停止搜索,并将请求传递给对应的视图。

这个过程就像是你拿着藏宝图,一边走一边对照地图上的标记。当你走到一个标记点时,你会停下来,看看这个标记点是否就是你要找的宝藏所在地。如果是,你就找到了宝藏;如果不是,你就继续前进,直到找到正确的地点。

在Django中,路由匹配支持多种类型的参数,包括动态参数和命名空间。动态参数允许你在URL中包含变量,这样同一个视图就可以处理多种不同的请求。

# urls.py
path('user/<int:user_id>/', views.user_profile, name='user_profile'),

这个例子中的<int:user_id>就是一个动态参数,它表示用户ID,可以是任何整数。

3.3 URL 参数传递方法

URL参数就像是你给服务员的小纸条,上面写着你的特殊要求。在Django中,你可以通过URL传递参数给视图,视图函数会根据这些参数来定制响应。

想象一下,你去餐厅点菜,你可能会告诉服务员:“我想要一份宫保鸡丁,不要放辣椒。”这里的“不要放辣椒”就是一个参数,服务员会根据这个参数来准备你的菜。

在Django中,你可以通过查询字符串(如?name=John)或者动态URL路径(如/user/123/)来传递参数。

# views.py
def user_profile(request, user_id):# 使用user_id这个参数来获取用户信息user = get_object_or_404(User, pk=user_id)return render(request, 'user_profile.html', {'user': user})

在这个例子中,user_id是一个通过URL传递的参数,视图函数user_profile会使用这个参数来获取并显示用户信息。

现在,我们已经掌握了URLconf和路由系统的魔法。就像拥有了一张详细的藏宝图,我们可以轻松地引导用户到达他们想去的地方。接下来,我们将探索正则表达式和路径转换器的奥秘,这将帮助我们更精确地控制这张魔法地图上的路径。准备好了吗?让我们继续这场寻宝之旅!
在这里插入图片描述

4. 正则表达式与路径转换器

4.1 正则表达式在路由中的应用

正则表达式就像是一把万能钥匙,能够解锁各种复杂的URL模式。在Django的URL路由中,正则表达式允许你定义复杂的URL模式,以匹配特定的请求。

想象一下,你手里有一把能够打开任何锁的神奇钥匙。在Django中,这把钥匙就是正则表达式。通过它,你可以精确地指定URL的结构,包括数字、字母、特定格式的字符串等。

# urls.py
from django.urls import re_path
from . import viewsurlpatterns = [re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]

在这个例子中,re_path函数使用了正则表达式r'^articles/(?P<year>[0-9]{4})/$'来定义一个URL模式。这个模式匹配以articles/开头,后面跟着四位数字年份,如articles/2024/,并且将这个年份作为一个名为year的参数传递给year_archive视图。

4.2 Django 内置路径转换器介绍

Django内置了一些路径转换器,这些转换器就像是预制的锁,你可以直接使用它们来简化URL模式的定义。这些路径转换器包括strintsluguuid等,它们分别用于匹配字符串、整数、URL安全的字符串和通用唯一识别码。

# urls.py
from django.urls import path
from . import viewsurlpatterns = [path('blog/<int:year>/slug/<slug:slug>/', views.blog_detail),
]

在这个例子中,<int:year><slug:slug>是两个内置的路径转换器。year将匹配一个整数,而slug将匹配一个URL安全的字符串,如blog/2024/hello-world/

4.3 自定义路径转换器的创建与使用

如果你觉得现有的路径转换器不够用,或者想要更精确地控制URL模式,你可以创建自定义的路径转换器。这就像是打造一把专属的钥匙,来打开特定的锁。

# converters.py
from django.urls import register_converter
from somewhere import validate_emailclass EmailConverter:regex = '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}'def to_python(self, value):return validate_email(value)def to_url(self, value):return str(value)register_converter(EmailConverter, 'email')
# urls.py
from django.urls import path
from . import views
from .converters import EmailConverterurlpatterns = [path('user/<email:user_email>/', views.user_profile),
]

在这个例子中,我们首先定义了一个EmailConverter类,它匹配电子邮件地址的正则表达式。然后我们使用register_converter函数注册了这个转换器,并在URL模式中使用了<email:user_email>来匹配电子邮件地址。

现在,我们已经掌握了正则表达式和路径转换器的魔法,这让我们能够更加灵活和精确地控制URL路由。就像拥有了一套完整的开锁工具,我们可以打开任何复杂的锁。接下来,我们将探索URL路由的最佳实践,这将帮助我们构建一个既强大又易于维护的Django应用。准备好了吗?让我们继续这场魔法之旅!

5. URL 路由的最佳实践

5.1 路由组织结构与命名空间

在Django的URL路由世界里,组织结构就像是城市规划。一个好的城市规划可以让居民更容易找到目的地,同样,一个好的URL路由组织结构可以让开发者和用户更容易理解和使用应用。

想象一下,你在一个大城市中,街道和区域都被合理地划分和命名,这样无论你想去哪里,都能找到一条清晰的路线。在Django中,我们可以通过将urls.py文件分散到不同的应用中,来实现类似的效果。

# myapp/urls.py
from django.urls import path
from . import viewsapp_name = 'myapp'
urlpatterns = [path('articles/', views.article_list, name='article_list'),
]

在这个例子中,我们为myapp应用创建了一个独立的urls.py文件,并定义了一个名为myapp的命名空间。这样,我们就可以通过myapp:article_list这样的名称来引用这个URL。

5.2 URL包含与模块化设计

在URL路由设计中,"包含"就像是在一个大商场里设立不同的专卖店。每个专卖店都有自己的特色和商品,但它们都被包含在这个大商场中,方便顾客一站式购物。

在Django中,我们可以使用include()函数来实现URL的包含,这样可以让每个应用管理自己的URL,保持代码的模块化。

# project/urls.py
from django.urls import include, pathurlpatterns = [path('blog/', include('blog.urls')),path('shop/', include('shop.urls')),
]

在这个例子中,blog/shop/是两个不同的应用,它们各自有自己的URL配置,被包含在项目的主urls.py文件中。

5.3 URL 跳转与反向解析策略

在URL路由的世界中,跳转就像是从一个场景切换到另一个场景。而反向解析,则像是在场景之间建立一条秘密通道,让你可以快速从一个场景跳转到另一个场景。

在Django中,我们可以使用redirect()函数来实现URL跳转,而反向解析则通过reverse()函数来实现。这样,我们就可以根据需要,将用户从一个页面引导到另一个页面。

# views.py
from django.shortcuts import redirect, reversedef some_view(request):# 直接跳转到另一个URLreturn redirect('some-url-name')def another_view(request):# 使用reverse进行反向解析,跳转到article_list页面return redirect(reverse('article_list'))

在这个例子中,redirect('some-url-name')会将用户重定向到名为some-url-name的URL,而redirect(reverse('article_list'))则会根据article_list这个名称反向解析出对应的URL,并进行跳转。

现在,我们已经掌握了URL路由的最佳实践,这就像是拥有了一张精心规划的城市地图,无论用户想去哪里,都能轻松找到正确的路线。接下来,我们将回顾Django视图与URL路由的核心要点,并提出一些提升应用可维护性的建议。准备好了吗?让我们继续这场精彩的旅程!

6. 结论

6.1 Django 视图与 URL 路由的核心要点回顾

随着我们的旅程即将到达尾声,让我们来回顾一下Django视图与URL路由的核心要点,就像是在结束一场精彩的电影后,重温那些难忘的瞬间。

视图是我们应用的心脏,负责处理用户的请求并生成响应。它们可以是简单的函数视图,也可以是强大的类视图,甚至是通用视图,这些都取决于你的具体需求。

URL路由则是连接用户和视图的桥梁。通过精心设计的URLconf,我们能够确保每个请求都能被正确地引导到相应的视图。而正则表达式和路径转换器则是我们在这个过程中的得力助手,它们帮助我们精确地定义和匹配URL模式。

最佳实践的运用,让我们的URL路由不仅清晰易懂,而且易于维护和扩展。通过合理的组织结构和命名空间的使用,以及模块化的URL设计,我们的应用就像是一个个精心布置的房间,每个房间都有其独特的功能和风格。

6.2 实践中提升应用可维护性的建议

在我们结束这场Django视图与URL路由的魔法之旅之前,我想给大家一些建议,帮助你们在未来的实践中提升应用的可维护性。

保持简洁:就像写诗一样,简洁明了的代码总是更容易理解和维护。避免过度复杂的URL模式和视图逻辑,让每个部分都尽可能简单。

使用命名空间:通过为每个应用定义命名空间,我们可以清晰地区分不同应用的URL,这就像是给每个房间贴上标签,方便我们快速找到目的地。

模块化设计:将URL路由分散到不同的应用中,而不是全部集中在一个urls.py文件中。这样,每个应用都可以独立管理自己的路由,使得整个项目更加模块化。

利用反向解析:通过reverse()函数,我们可以避免在代码中硬编码URL,这不仅使得代码更加清晰,而且当URL发生变化时,我们也更容易进行更新。

编写文档:就像是一本旅行指南,良好的文档能够帮助你和你的团队更好地理解和使用你的应用。

在这里插入图片描述

随着我们的旅程结束,希望你们不仅掌握了Django视图与URL路由的知识,更学会了如何将这些知识应用到实践中,构建出既强大又易于维护的应用。记得,每一次编码都是一次新的冒险,而每一次冒险都充满了无限可能。祝你们在Django的世界里,创造属于自己的魔法!

我是阿佑,一个致力于把晦涩的技术讲得有趣的中二青年,欢迎持续关注 ~


参考文献

  1. Django官方文档:视图 - 这是学习Django视图最权威的资源。官方文档详细解释了视图的概念、如何编写视图以及视图的不同类型。

    • 链接:Django官方文档:视图
  2. Django官方文档:URL调度器 - 这部分文档详细介绍了Django的URL分发机制,包括URLconf的组织、正则表达式和路径转换器的使用。

    • 链接:Django官方文档:URL调度器
  3. Advanced URL Routing in Django - 这篇文章提供了关于Django URL路由的一些高级技巧和最佳实践,适合有一定基础的开发者阅读。

    • 链接:Advanced URL Routing in Django
  4. Two Scoops of Django: Best Practices for Django 1.8 - 这本书由Daniel Roy Greenfeld和Audrey Roy Greenfeld撰写,提供了大量关于Django开发的最佳实践,包括视图和URL的设计。

  5. Test-Driven Development with Python - 作者Harry J.W. Percival介绍了如何使用测试驱动开发(TDD)的方法来构建Django应用,包括视图和URL的设计和测试。

  6. Django for Beginners - 这本书由William S. Vincent撰写,适合初学者,涵盖了Django的基础知识,包括视图和URL路由的简单介绍。

  7. Django Cookbook - 这是一本实践指南,包含了大量的示例和技巧,可以帮助你解决在Django开发过程中遇到的各种问题,包括视图和URL路由的高级应用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新h5st(4.7.2)参数分析与纯算法还原(含算法源码)

文章目录 1. 写在前面2. 加密分析3. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

图解 Python 编程(10) | 错误与异常处理

&#x1f31e;欢迎来到Python的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年6月2日&…

数据结构(C):从初识堆到堆排序的实现

目录 &#x1f31e;0.前言 &#x1f688; 1.堆的概念 &#x1f688; 2.堆的实现 &#x1f69d;2.1堆向下调整算法 &#x1f69d;2.2堆的创建&#xff08;堆向下调整算法&#xff09; ✈️2.2.1 向下调整建堆时间复杂度 &#x1f69d;2.3堆向上调整算法 &#x1f69d;2.…

c++------类和对象(下)包含了this指针、构造函数、析构函数、拷贝构造等

文章目录 前言一、this指针1.1、this指针的引出1.2、 this指针的特性 二、类的默认的六个构造函数2.1、构造函数简述2.2构造函数 三、析构函数3.1、析构函数引出3.2、特点&#xff1a; 四、拷贝构造4.1、引入4.2、特征&#xff1a;4.3、默认拷贝构造函数 总结 前言 在本节中&a…

Compose Multiplatform 1.6.10 发布,解释一些小问题, Jake 大佬的 Hack

虽然一直比较关注跨平台开发&#xff0c;但其实我很少写 Compose Multiplatform 的内容&#xff0c;因为关于 Compose Multiplatform 的使用&#xff0c;其实我并没在实际生产环境上发布过&#xff0c;但是这个版本确实值得一提&#xff0c;因为该版本包含&#xff1a; iOS Bet…

数据库(15)——DQL分页查询

DQL分页查询语法 SELECT 字段列表 FROM 表名 LIMIT 起始索引&#xff0c;查询记录数; 注&#xff1a;起始索引从0开始&#xff0c;起始索引&#xff08;查询页码-1&#xff09;*每页显示记录数。 如果查询的是第一页&#xff0c;可以省略起始索引。 示例&#xff1a;查询第一页…

【考研数学】概率论如何复习?跟谁好?

概率论一定要跟对老师&#xff0c;如果跟对老师&#xff0c;考研基本上能拿满分 概率论在考研试卷中占比并不大&#xff0c;其中&#xff1a; 高等数学&#xff0c;90分&#xff0c;约占比60%; 线性代数&#xff0c;30分&#xff0c;约占比20%; 概率论与数理统计&#xff0…

每日5题Day15 - LeetCode 71 - 75

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;71. 简化路径 - 力扣&#xff08;LeetCode&#xff09; class Solution {public String simplifyPath(String path) {Deque<String> stack new LinkedList…

mysql的增删查改(进阶)

目录 一. 更复杂的新增 二. 查询 2.1 聚合查询 COUNT SUM AVG MAX MIN 2.1.2 分组查询 group by 子句 2.1.3 HAVING 2.2 联合查询/多表查询 2.2.1 内连接 2.2.2 外连接 2.2.3 全外连接 2.2.4 自连接 2.2.5 子查询 2.2.6 合并查询 一. 更复杂的新增 将从表名查询到…

自动化办公01 smtplib 邮件⾃动发送

目录 一、准备需要发送邮件的邮箱账号 二、发送邮箱的基本步骤 1. 登录邮箱 2. 准备数据 3. 发送邮件 三、特殊内容的发送 1. 发送附件 2. 发送图片 3. 发送超文本内容 4.邮件模板内容 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议…

【Qt秘籍】[009]-自定义槽函数/信号

自定义槽函数 在Qt中自定义槽函数是一个直接的过程&#xff0c;槽函数本质上是类的一个成员函数&#xff0c;它可以响应信号。所谓的自定义槽函数&#xff0c;实际上操作过程和定义普通的成员函数相似。以下是如何在Qt中定义一个自定义槽函数的步骤&#xff1a; 步骤 1: 定义槽…

三种字符串的管理方式

NSString的三种实现方式 OC这个语言在不停的升级自己的内存管理&#xff0c;尽量的让自己的 OC的字符串 问题引入 在学习字符串的过程中间会遇到一个因为OC语言更新造成的问题 例如&#xff1a; int main(int argc, const char * argv[]) {autoreleasepool {NSString* str1 …

网络原理——http/https ---http(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 网络原理 HTTP/HTTPS HTTP,全称为"超文本传输协议" HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议. 实际上,HTTP最新已经发展到 3.0 但是当前行业中主要使用的HT…

明日周刊-第12期

以前小时候最期待六一儿童节了&#xff0c;父母总会给你满足一个愿望&#xff0c;也许是一件礼物也许是一次陪伴。然而这个世界上其实还有很多儿童过不上儿童节&#xff0c;比如某些地区的小孩子&#xff0c;他们更担心的是能不能见到明天的太阳。 文章目录 一周热点航天探索火…

LeetCode-77. 组合【回溯】

LeetCode-77. 组合【回溯】 题目描述&#xff1a;解题思路一&#xff1a;回溯背诵版解题思路三&#xff1a;0 题目描述&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&a…

算法-对列表元素划分成两个和值最大且相等的子列表

现有私募基金发行一支特殊基金产品&#xff0c;该基金认购人数上限不超过 30 人&#xff0c; 募集总金额不超过 3000W&#xff0c;每个投资人认购金额不定。该基金只能将募集到的钱用于投资两支股票&#xff0c;且要求两支股票投资金额必须相同&#xff0c;且每位投资人的钱只能…

springboot报错:Failed to start bean ‘documentationPluginsBootstrapper‘

项目场景&#xff1a; springboot项目启动时报错 问题描述 具体报错信息&#xff1a; 可能原因分析&#xff1a; 1、SpringFox的版本与Spring Boot的版本不兼容。解决这个问题&#xff0c;你可能需要检查你正在使用的SpringFox和Spring Boot的版本&#xff0c;确保它们是兼容…

【Intro】Heterogeneous Graph Attention Network(HAN)

论文链接&#xff1a;https://arxiv.org/pdf/1903.07293 Abstract 异构性和丰富的语义信息给面向异构图的图形神经网络设计带来了巨大的挑战。 -> 一种基于分层注意的异构图神经网络&#xff0c;包括节点级注意和语义级注意。具体来说&#xff0c;节点级关注旨在学习节点…

GPT4o还没用上?落后一个月!

文章目录 一.Share官方网站&#xff1a;以一半的价格享受官网服务1.1 网址1.2 一些介绍和教学实战&#xff1a;1.3 主界面&#xff08;支持4o)&#xff1a;1.4 GPTS&#xff08;上千个工具箱任你选择&#xff09;&#xff1a;1.5 快速的文件数据分析&#xff08;以数学建模为例…

web前端三大主流框架指的是什么

web前端三大主流框架是什么&#xff1f;前端开发师的岗位职责有哪些&#xff1f;这边整理了相关内容供大家参考了解&#xff0c;请各位小伙伴随小编一起查阅下面的内容。 web前端三大主流框架 web前端三大主流框架是Angular、React、Vue。 1.Angular Angular原名angularJS诞生…