当前位置: 首页 > news >正文

Django小白级开发入门

1、Django概述

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。
Django 框架的核心组件有:

  • 用于创建模型的对象关系映射
  • 为最终用户设计较好的管理界面
  • URL 设计
  • 设计者友好的模板语言
  • 缓存系统

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。
MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图  。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。

层次职责
模型(Model),即数据存取层处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等
模板(Template),即表现层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。
视图(View),即业务逻辑层存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

2、Django项目环境搭建

主要步骤是:

  • 创建并激活虚拟环境
  • 安装Django模块
  • 创建Django项目
  • 创建app应用程序
  • 注册app
  • 编写Django视图
  • 编写Django路由
  • 启动Django项目

(1)创建并激活虚拟环境

cd D:\djangotest #自己创建空文件夹存放项目
python -m venv djangoenv #创建虚拟环境

运行以下命令,激活虚拟环境

cd D:\djangotest
djangoenv\Scripts\activate #激活虚拟环境

(2)安装Django模块

#1激活虚拟环境
cd D:\djangotest
djangoenv\Scripts\activate
#2安装django模块
pip install Django #激活虚拟环境后安装Django模块

上述命令执行后,会把Django模块,安装到了djangoenv/Lib/site-packages 下,也就是说,此Django模块仅仅在虚拟环境中,而不是安装在Python全 局环境。目录如下图所示:

(3)创建Django项目

安装了Django之后,我们就可以使用Django的管理工具------>django-admin了

我们创建一个名称为loginweb的Django项目,命令如下:

#1激活虚拟环境
cd D:\djangotest
djangoenv\Scripts\activate
#2创建一个loginweb的项目
django-admin startproject loginweb

此命令执行后,会在djenv的同级目录,创建一个名称loginweb的Django 项目。目录结构如下图所示:

用Pycharm打开项目,项目结构文件含义如下:

  • 外层的loginweb目录:是项目的容器,Django不关心它的名字,我 们可以将它重命名为任何我们喜欢的名字
  • 里面的loginweb目录:它是一个纯python包。我们可以称呼它为项目的名称,不能随意重命名
  • manage.py :它是Django的一个非常重要的工具,通过它可以调用 django shell和数据库等,如:创建app应用程序、创建数据库表、清 空数据、启动项目等操作
  • settings.py :Django 项目的配置文件。包含了项目的默认设置,包 括数据库信息,调试标志以及其他一些工作的变量
  • urls.py :Django 项目的URL路由声明,负责把URL模式映射到应用 程序
  • wsgi.py:Web服务器网关接口(Python Web Server Gateway Interface的缩写),Python应用和Web服务器之间的一种接口,可以 看成是一种协议、规范。它是基于Http协议的,不支持WebSoket
  • asgi.py:异步网关协议接口,能够处理多种通用的协议类型,包括 HTTP,HTTP2和WebSocket,可以看成ASGI是WSGI的扩展

(4)创建app应用程序

一般一个项目包含多个app应用程序(当然,通用的app也可以在多个项目中使用) 下面我们为loginweb项目,创建login

#1激活虚拟环境
cd D:\djangotest
djangoenv\Scripts\activate
#2切到django项目中
cd loginweb
#3创建一个叫login的应用
django-admin startapp login

上述命令执行后,目录结构如下图所示:

(5)注册app

app应用程序创建以后,必须把app注册到Django,才能够被Django项目所管理。我们只需要把login应用的名称,配置到 loginweb/settings.py文件中即可。如下图所示:

(6)编写Django视图

Django视图的作用:用于接受Web请求并且返回Web响应的简单Python 函数。该函数一般定义在各自应用的views.py文件中。在视图函数中,有 两个重要的对象:请求对象和响应对象。
下面是一个最简单的视图函数:

# 例:在login/views.py 中
from django.http import HttpResponse
# Create your views here.def login(request):return HttpResponse("登录页面")

(7)编写Django路由

Django的路由定义文件为:项目目录urls.py文件。我们所有的路由配置,都以列表的方式,定义在urls.py文件中,添加我们想要的路由。

# 例:在loginweb/urls.py 中
from django.contrib import admin
from django.urls import path
from login import views
urlpatterns = [path("admin/", admin.site.urls),path("login/",views.login)
]

(8)启动Django项目

在开发环境下,我们需要在本地启动Django项目,来开发与调试我们的代 码。启动Django项目命令如下:

python manage.py runserver [port]
#[port] 为应用访问端口,可以缺省不写,默认为8000。

此时,我们就可以用浏览器访问我们的项目了。结果如下图所示:

访问我们写好的路由:

3、创建登录页面

在login底下新写建一个templates目录,存放编写的html前端页面。

loginweb -> login -> templates -> login.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录页面</title><style>body{text-align:center;}</style>
</head>
<body>
<form action="/login/" method="post">{% csrf_token %}<h1 align="center">登录页面</h1><p class="divs"><label for="username">用户名:</label><input type="text" id="username" name="username" align="center"></p><p class="divs">&nbsp&nbsp&nbsp<label for="password">密码:</label><input type="password" id="password" name="password"></p><input type="submit" value="登录"><span style="color:red">{{ error }}</span>
</form></body>
</html>

loginweb -> login -> templates -> index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>这里是主页</title><style>h1 { color:red }</style>
</head>
<body><h1>这里是主页</h1>
</body>
</html>

loginweb -> login -> views.py

from django.shortcuts import render,redirect
# Create your views here.def login(request):if request.method == 'POST':username = request.POST.get('username')passowrd = request.POST.get('password')if username=='songqin' and passowrd =='123456':return redirect('/index')else:return render(request,'login.html',{"error":"用户名或密码错误"})return render(request,'login.html')def index(request):return render(request,'index.html')

loginweb -> loginweb -> urls.py

from django.contrib import admin
from django.urls import path
from login import views
urlpatterns = [path("admin/", admin.site.urls),path("login/",views.login),path("index/",views.index)
]

再次启动Django项目

python manage.py runserver [port]
#[port] 为应用访问端口,可以缺省不写,默认为8000。

访问http://127.0.0.1:8000/login/项目

输入不是用户名密码不是songqin/123456

输入songqin/123456点击登录 跳转到主页面

4、数据库链接

(1)配置mysql

loginweb -> loginweb -> settings.py

默认的数据库配置如下:

DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3","NAME": BASE_DIR / "db.sqlite3",}
}

修改后如下所示:

DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","NAME": "数据库名","USER": "用户","PASSWORD": "密码","HOST": "ip","PORT": "3306"}
}

保存后,系统报错,缺少mysql插件,需要安装mysqlclient

执行以下命令安装:

pip install mysqlclient

python manage.py runserver:然后成功运行。

按这个同样可以运行程序。

(2)自动创建数据库表

在loginweb -> login -> models.py中,添加用户类User_01。子类Meta中定义表的元数据,这里指定了表的名称为f_user_01。

from django.db import models# Create your models here.
class User_01(models.Model):u_id = models.AutoField(primary_key=True)username = models.CharField(max_length=64, null=True)name = models.CharField(max_length=64, null=True)password = models.CharField(max_length=64, null=True)sex = models.CharField(max_length=64, null=True)age = models.CharField(max_length=64, null=True)phone = models.CharField(max_length=64, null=True)email = models.CharField(max_length=64, null=True)unit = models.CharField(max_length=64, null=True)avatar = models.CharField(max_length=64, null=True)status = models.CharField(max_length=64, null=True)create_time = models.CharField(max_length=64, null=True)delete_time = models.CharField(max_length=64, null=True)update_time = models.CharField(max_length=64, null=True)class Meta:db_table = "f_user_01"

执行命令:

# 生成迁移数据
python manage.py makemigrations
# 生成数据库表
python manage.py migrate 

执行完第一个命令,会在loginweb -> login -> migrations下生成初始化文件,仅仅对我们的类做了一个解读。

执行完第二个命令,会在数据库中生成数据库表。

数据库表中生成如下,只有f_user_01是我们要生成的表,上面其他的表都是Django系统默认生成的表,暂且不管。

(3)手工创建表进行映射

上面的方式是通过django自动创建models中定义的表。

现在我们需要手工创建表,然后在models中进行映射。

在数据库中创建表如下:

然后在loginweb -> login -> models.py中,增加代码如下:

class User(models.Model):id = models.AutoField(primary_key=True)name = models.CharField(max_length=30, null=True)age = models.IntegerField(null=True)email = models.CharField(max_length=50, null=True)class Meta:db_table = "user"

直接运行程序即可。

(4)小结

1、配置mysql,需要安装mysqlclient,编写models的实体类,通过迁移命令可以自动生成mysql数据库表结构。

2、如果数据库表中已经创建好表,则只在model.py中创建对应实体类即可,不用执行迁移的两个命令。这里就和java对应上了,直接编写对应实体类和sql即可。

3、如果数据库没有创建好表,可以在models设计好实体类,使用迁移命令即可自动生成mysql数据库表结构。

(5)添加数据

在loginweb -> login -> views.py中,添加代码如下:

def addUser(request):models.User.objects.create(name='linfuchi', age=90, email='i miss you')result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

在loginweb -> loginweb -> urls.py中,添加代码如下:

测试:

数据库表中的信息:

(6)创建默认的表

在loginweb -> login -> models.py中,增加新的类:

class Info(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=100)

此时没有通过class Meta指定具体的表名信息。

那么会自动创建表吗?答案是肯定的。

针对python manage.py migrate,提示没有要执行的。

这是因为迁移记录已被标记为已应用。

SELECT * FROM django_migrations;

如果发现 login 应用的 0001_initial 迁移记录已经存在,说明该迁移已经被应用过了。

如果确认 login 应用的 0001_initial 迁移记录不应该存在,你可以手动删除该记录,然后重新执行迁移。

删除语句:

DELETE FROM django_migrations WHERE app = 'login' AND name = '0001_initial';

然后重新执行迁移:

python manage.py migrate

此时,查询数据库可以发现已经有一个新表了:

5、创建自定义命令

在loginweb -> login下创建目录 management,在其下再创建目录commands。

这里就是存放命令的目录,类似于springboot等其他框架技术,遵循“约定大于配置”的原则。

在其下再创建hello.py的文件,整体结构如下:

hello.py的代码如下:

from django.core.management.base import BaseCommandclass Command(BaseCommand):help = 'Prints a simple greeting message'def handle(self, *args, **options):# 在这里编写命令的具体逻辑self.stdout.write(self.style.SUCCESS('Hello, Django!'))

执行命令:

在上述代码中:

help 属性是命令的简短描述,当你运行 python manage.py help hello 时会显示该描述。

handle 方法是命令的核心逻辑,当你运行该命令时,handle 方法会被执行。self.stdout.write 用于输出信息,self.style.SUCCESS 会将输出信息以绿色高亮显示。

6、创建用户

Django自带的管理界面提供了便捷的用户创建功能。

(1)创建超级用户

在项目根目录下,打开命令行终端,执行以下命令:

python manage.py createsuperuser

按照提示输入用户名、邮箱和密码。

(2)创建普通用户

  • 启动服务器:python manage.py runserver
  • 登录管理界面:打开浏览器,访问 http://127.0.0.1:8000/admin/,使用之前创建的超级用户账号和密码登录。
  • 创建新用户:登录成功后,在管理界面中找到 “用户” 选项,点击 “添加” 按钮,输入新用户的用户名、密码等信息,然后点击 “保存” 即可创建新用户。

我们创建了账密为hugh/hugh。

7、Rest framework框架

(1)获取token信息

在loginweb -> loginweb -> urls.py中配置token的请求信息。

具体代码如下:

from django.contrib import admin
from django.urls import path
from login import views
from rest_framework_simplejwt.views import (TokenObtainPairView,TokenRefreshView,
)urlpatterns = [path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),path("admin/", admin.site.urls),path("login/", views.login),path("index/", views.index),path("addUser/", views.addUser)
]

然后在cmd中执行如下命令:

curl -X POST -H "Content-Type: application/json" -d "{\"username\": \"hugh\", \"password\": \"hugh\"}" http://127.0.0.1:8000/api/token/

就可以获得token信息。

(2)创建Post请求

首先,修改loginweb -> login -> views.py文件

添加如下代码:

from rest_framework import viewsets, status
from rest_framework.decorators import action
from rest_framework.response import Responseclass BookViewSet(viewsets.ModelViewSet):@action(detail=False, methods=['post'])def hello(self, request, pk=None):message = "Hello! You are interacting with the book!"return Response({'message': message}, status=status.HTTP_200_OK)

action的detail为False,表示URL不会包含对象的主键,它是针对整个资源集合的操作。

然后,在loginweb -> login下添加urls.py文件

内容如下:

from django.urls import path,include
from rest_framework.routers import DefaultRouter
from .views import BookViewSetrouter = DefaultRouter()
router.register(r'books', BookViewSet, basename='books')urlpatterns = [path('', include(router.urls))
]

接着,在loginweb -> loginweb -> urls.py中添加如下代码

此时,通过python manage.py runserver运行程序。

然后在cmd执行curl命令如下:

C:\Users\hugh>curl -X POST -H "Content-Type: application/json"  http://127.0.0.1:8000/api/books/hello/
{"message":"Hello! You are interacting with the book!"}

(3)与数据库表结合的Post请求

在上一个例子的基础上做调整。

首先,在loginweb -> login下新建py文件命名为serializers.py。

代码如下:

from rest_framework import serializers
from .models import Userclass UserSerializer(serializers.ModelSerializer):class Meta:model = Userfields = '__all__'

然后,优化loginweb -> login -> urls.py文件

去掉basename的信息

接着,修改loginweb -> login -> views.py文件。

执行curl命令如下:

C:\Users\hugh>curl -X POST -H "Content-Type: application/json" -d "{\"username\": \"hugh\", \"password\": \"hugh\"}" http://127.0.0.1:8000/api/books/1/hello/
{"message":"Hello! You are interacting with the user-email: test1@sina.com user-name:hugh"}

其中的books/1/hello中的1就是User的id值。

detail=True表示只查单条的值。

相关文章:

Django小白级开发入门

1、Django概述 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;视图V和模版T。 Django 框架的核心组件有&#xff1a; 用于创建模型的对象关系映射为最终用户设计较好的管理界面URL 设计设计者友好的模板…...

热图回归(Heatmap Regression)

热图回归(Heatmap Regression)是一种常用于关键点估计任务的方法,特别是在人体姿态估计中。它的基本思想是通过生成热图来表示某个关键点在图像中出现的概率或强度。以下是热图回归的主要特点和工作原理: 主要特点 热图表示: 每个关键点对应一个热图,热图中的每个像素值…...

SpringSecurity认证授权完整流程

SpringSecurity认证流程&#xff1a;loadUserByUsername&#xff08;&#xff09;方法内部实现。 实现步骤&#xff1a; 构建一个自定义的service接口&#xff0c;实现SpringSecurity的UserDetailService接口。建一个service实现类&#xff0c;实现此loadUserByUsername方法。…...

MongoDB用户管理和复制组

用户管理 1、建用户时&#xff0c;use到的库就是此用户的验证库 2、登录时必须明确指定验证库才能登录 3、通常管理员用的验证库是admin&#xff0c;普通用户的验证库一般是所管理的库设置为验证库 4、如果直接登录到数据库&#xff0c;不进行use&#xff08;示例&#xff…...

【Android】setText调用导致的悬浮窗抖动问题

在Android13中&#xff0c;有这么一个bug&#xff0c;写一个可以拖到的悬浮窗&#xff0c;这个悬浮窗里有TextView&#xff0c;在拖到某个位置后&#xff0c;再调用TextView的setText方法&#xff0c;会发现出现了一个窗口动画&#xff0c;悬浮窗跳到了起始位置&#xff0c;从开…...

【从零开始学习计算机科学】数字逻辑(四)数字系统设计

【从零开始学习计算机科学】数字逻辑(四)数字系统设计 数字系统设计硬件描述语言 HDL(Hardware Description Language)Verilog HDL 的起源与发展HDL 软核、固核和硬核的重用HDL 的应用数字系统设计实现数字系统设计 一个数字集成电路的可以从不同的层次(系统级、算法级、…...

QT 作业 C++ day5

作业 代码 MyQThread.h class MyThread : public QThread {Q_OBJECT public:MyThread(QObject *parent nullptr); protected:void run() override; signals://向ui界面发送的 "复制进度" 的信号void copy_process_signal(int index); public slots:// "复…...

洛谷 P2234:[HNOI2002] 营业额统计 ← STL set

【题目来源】 https://www.luogu.com.cn/problem/P2234 【题目描述】 Tiger 最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本&#xff0c;账本上记录了公司成立以来每天的营业额。分析…...

植物神经功能紊乱检查不出来,浑身难受?

植物神经功能紊乱&#xff0c;又称为自主神经功能失调&#xff0c;是一种功能性神经症&#xff0c;它涉及身体多个系统的不规则反应&#xff0c;通常没有器质性病变作为基础。这意味着&#xff0c;尽管患者可能会体验到多种症状&#xff0c;如焦虑、紧张、心悸、疲劳、失眠等&a…...

vue3 遇到babel问题(exports is not defined) 解决方案

由于我在引用ant-design-vue插件&#xff0c;于是产生了下图的问题。 1.问题分析 Babel 是一个 JavaScript 编译器&#xff0c;主要用于&#xff1a;将 ES6 代码转译为 ES5 代码&#xff0c;以兼容旧版浏览器。处理模块化语法&#xff08;如 import/export&#xff09;。 2.解…...

基于SpringBoot+Vue的工商局商家管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

ESP8266 入门(第 2 部分):使用 AT 命令

使用 AT 命令对 WiFi 收发器ESP8266编程 本教程是上一个教程 ESP8266 入门(第 1 部分)的延续。因此,简单回顾一下,在之前的教程中,我们介绍了 ESP 模块,并学习了一些基础知识。我们还使用 FTDI 串行适配器模块制作了一个开发板,该模块可以很容易地用于使用 AT 命令和 A…...

【CSS3】筑基篇

目录 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 CSS 三大特性继承性层叠性优先级 背景属性背景色背景图背景图平铺方式背景图位置背景图缩放背景图固定背景复合属性 显示模式显示模式块级元素行内元素行内块元素 转换显示模式 结构伪类选择器结构伪类选择器…...

11-Agent中配置自己的插件

目录 关键词 摘要 速览 配置和集成自定义插件 使用AI插件在直播间绘制图像 API接口调用及配置说明 创建和配置API工具以生成图像 编写和配置参数及API调用说明 如何配置和使用API进行HTTP请求 配置和测试API插件的步骤 思维导图 发言总结 要点回顾 如何配置一个专…...

2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> #include <math.h>int search( int n );int…...

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布&#xff01;此次更新&#xff0c;Easysearch 增加了新的功能和数据类型&#xff0c;包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持&#xff0c;Console 新增了日志查询功能。 INFINI Easyse…...

关于网络数通工程师 OSPF 协议的常见面试问题

基础理论部分‌ ‌OSPF是什么&#xff1f;其核心设计目标及主要特性有哪些&#xff1f;‌ OSPF&#xff08;开放式最短路径优先&#xff09;是基于链路状态的内部网关协议&#xff08;IGP&#xff09;&#xff0c;使用Dijkstra的SPF算法计算最短路径树&#xff0c;核心目标包括…...

Go 语言 + libbpfgo 实战 eBPF 开发

Go 语言 libbpfgo 实战 eBPF 开发 1. 引言 这是专栏的第一篇文章&#xff0c;我们将从环境准备、示例代码运行和详解三个方面&#xff0c;带你快速入门 eBPF 开发。 &#x1f4cc; 读完这篇文章&#xff0c;你将学会&#xff1a; ✔️ 如何用 Go libbpfgo 开发 eBPF 程序。…...

练习题:74

目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 复杂度分析 可能遇到的问题及注意事项 代码实现 代码解释 运行思路 1. 列表定义阶段 2. for 循环启动阶段 3. 偶数判断与 continue 语句执行阶段 4. 奇数元素输出阶段 5. 循环结束阶段 结束语…...

Python 性能优化:从入门到精通的实用指南

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

C# OPC DA获取DCS数据(提前配置DCOM)

OPC DA配置操作手册 配置完成后&#xff0c;访问远程ip&#xff0c;就能获取到服务 C#使用Interop.OPCAutomation采集OPC DA数据&#xff0c;支持订阅&#xff08;数据变化&#xff09;、单个读取、单个写入、断线重连...

xinference docker 部署方式

文章目录 简绍docker 安装方式访问地址对应官网在 dify 中 添加 xinference 容器内置大语言模型嵌入模型图像模型音频模型重排序模型视频模型 简绍 Xorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 Xinference&#xff0c;…...

基于Kubernetes部署MySQL主从集群

以下是一个基于Kubernetes部署MySQL主从集群的详细YAML示例&#xff0c;包含StatefulSet、Service、ConfigMap和Secret等关键配置。MySQL主从集群需要至少1个主节点和多个从节点&#xff0c;这里使用 StatefulSet 初始化脚本 实现主从自动配置。 1. 创建 Namespace (可选) ap…...

【Azure 架构师学习笔记】- Azure Databricks (17) --Delta Live Table和Delta Table

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (16) – Delta Lake 和 ADLS整合 前言 前面介绍了Delta Table&#xff0c;但是Databricks又推出了“Delta Live Tables&#xff08;DLTs&…...

Mybatis Generator 使用手册

第一章 什么是Mybatis Generator&#xff1f; MyBatis Generator Core – Introduction to MyBatis Generator MyBatis生成器&#xff08;MBG&#xff09;是MyBatis框架的代码生成工具。它支持为所有版本的MyBatis生成代码&#xff0c;通过解析数据库表&#xff08;或多个表&…...

快乐数 力扣202

一、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&…...

SPA单页面应用优化SEO

1.SSR服务端渲染 将组件或页面通过服务器生成html&#xff0c;再返回给浏览器&#xff0c;如nuxt.js或vue-server-renderer const Vue require(vue); const server require(express)(); const renderer require(vue-server-renderer).createRenderer();const vueApp new …...

城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 在城市霓虹灯夜景拍摄中&#xff0c;由于现场光线复杂等因素&#xff0c;照片可能无法完全呈现出当时的视觉感受。通过 Lr 调色&#xff0c;可以弥补拍摄时的不足。例如&#xff0c;运用基本调整面板中的曝光、对比度、阴影等工具&#xff0c;可以处理出画面的整体明暗…...

通领科技冲刺北交所

高质量增长奔赴产业新征程 日前&#xff0c;通领科技已正式启动在北交所的 IPO 进程&#xff0c;期望借助资本市场的力量&#xff0c;加速技术升级&#xff0c;推动全球化战略布局。这一举措不仅展现了中国汽车零部件企业的强大实力&#xff0c;也预示着行业转型升级的新突破。…...

隐私保护在 Facebook 用户身份验证中的应用

在这个数字化的时代&#xff0c;个人隐私保护成为了公众关注的焦点。社交媒体巨头 Facebook 作为全球最大的社交平台之一&#xff0c;拥有数十亿用户&#xff0c;其在用户身份验证过程中对隐私保护的重视程度直接影响着用户的安全感和信任度。本文将探讨 Facebook 在用户身份验…...