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

django之账号管理功能

账号管理功能

目录

1.账号管理页面

2.新增账号

3.修改账号

4.账号重置密码

5.删除账号功能

6.所有代码展示集合

7.运行结果

这一片文章, 我们需要新增账号管理功能, 今天我们写到的代码, 基本上都是用到以前所过的知识, 不过也有需要注意的细节。

一、账号管理界面

我们在做页面之前, 先创建好数据库:

models.py:

class AdminRole(models.Model):username = models.CharField(verbose_name="用户名", max_length=32)password = models.CharField(verbose_name="密码", max_length=64)password_choice = ((1, "员工"),(2, "领导"),(3, "管理员"))role = models.SmallIntegerField(verbose_name="角色", choices=password_choice)

然后分别在对应项目的目录下执行python manage.py makemigrations和python manage.py migrate去生成新的数据库表格。

随后我们要在templates文件夹下面创建admin文件夹, 然后再创建admin_list.html文件。

admin_list.html代码:

{% extends "index/model_tmp.html" %}{% block content %}<div class="container"><a href="/admin/add/" class="btn btn-success">添加信息</a>{# 实现搜素查询 #}<div style="float: right"><form method="get"><div class="input-group" style="float: right;width: 300px;"><input type="text" class="form-control" name="search" placeholder="Search for..."><span class="input-group-btn"><button class="btn btn-default" type="submit">搜索</button></span></div></form></div><div class="panel panel-danger"><div class="panel-heading"><h3 class="panel-title">用户表</h3></div><div class="panel-body"><table class="table table-hover"><thead><tr><th>ID</th><th>用户名</th><th>密码</th><th>重置密码</th><th>角色</th></tr></thead><tbody>{% for data in data_list %}<tr><th scope="row">{{ data.id }}</th><td>{{ data.username }}</td><td>******</td><td><a href="/admin/{{ data.id }}/reset/pwd">重置密码</a></td><td>{{ data.get_role_display }}</td><td style="color: green"><a href="/admin/{{ data.id }}/modify"><span style="color: green;"class="glyphicon glyphicon-pencil"aria-hidden="true"></span></a><a href="/admin/{{ data.id }}/del/"><span style="color: red;"class="glyphicon glyphicon-trash"aria-hidden="true"></span></a></td></tr>{% endfor %}</tbody></table></div></div>{# 实现分页查询 #}<ul class="pagination">{{ page_string }}</ul></div>
{% endblock %}

上述代码, 里面的内容, 和之前写的展示页面的代码, 写法一样, 需要注意的是, 这里面的a标签的路由不要写错了。

我们在views文件夹里面, 创建admin_role.py

代码:

from django.core.exceptions import ValidationError
from django.shortcuts import render, redirectfrom project_one.utils import pwd_data
from project_one.utils.PageData import PageData
from django import formsfrom project_one import models# Create your views here.
def admin(request):data_list = models.AdminRole.objects.all()page_object = PageData(request, data_list)content = {"data_list": page_object.page_queryset,"page_string": page_object.page_html()}return render(request, "admin/admin_list.html", content)

我们还是要用到上次已经封装好的分页功能。

配置路由:

urls.py:

"""project_simple URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from project_one.views import depart, user, assets, admin_roleurlpatterns = [# 账号管理页面展示path("admin_list/", admin_role.admin)
]

二、新增账号

我们在templates里面的admin下创建文件admin_operation.html, 这个文件, 是我们之后修改数据和重置密码都公用的文件。

admin_operation.html代码:

{% extends "index/model_tmp.html" %}
{% load static %}{% block css %}<link rel="stylesheet" href="{% static 'css/layui.css' %}">
{% endblock %}{% block content %}<div class="container"><h1>{{ title }}</h1><form method="post">{% csrf_token %}{% for filed in form %}
{#       filed.label这里面就是获取我们在models.py里面创建表格里面的每一个字段里面有个verbose_name这个参数的值         #}<label for="exampleInputEmail1">{{ filed.label }}</label>{{ filed }}{#       展示错误信息         #}<span style="color: red">{{ filed.errors.0 }}</span><br>{% endfor %}<button type="submit" class="btn btn-success">提交</button></form></div>
{% endblock %}{% block js %}{% endblock %}

后端写新增账号功能:

我们需要在utils文件夹里面创建一个pwd_data.py文件, 里面写的是md5加密的函数, 之后我们都需要对密码进行加密。

就在上篇文章我们写分页功能(给分页功能封装)的那个地方创建文件pwd_data.py:

在这里插入图片描述

pwd_data.py:

import hashlib# 这个SECRET_KEY就在settings.py文件里面去找, 找到之后把它复制过来
# 我们需要用到这个来进行加盐处理, 这样的话, 别人看到被加过盐的密文, 就破解不了了。
SECRET_KEY = 'django-insecure-m@31x($s*0tgzm0$2(ct6izu)8oe$xa)@k7(&*7tkr*g(dbl)5'def md5(data):obj_md5 = hashlib.md5(SECRET_KEY.encode('utf-8'))obj_md5.update(data.encode('utf-8'))return obj_md5.hexdigest()

admin_role.py:

from django.core.exceptions import ValidationError
from django.shortcuts import render, redirect
from project_one.utils import pwd_data
from project_one.utils.PageData import PageData
from django import forms
from project_one import modelsclass AdminAddModelForm(forms.ModelForm):# 当前变量名如果和数据表字段一致,则会覆盖,如果不同名,则会添加。# 我们的数据库里面没有new_password字段, 所以会添加。# 这个是用来做确认密码框用的, 创建账号的时候, 有输入密码和确认密码两个框, 之后判断的时候得确保两个输入框里面的密码是一致的, 账号才能被创建。new_password = forms.CharField(widget=forms.PasswordInput)class Meta:model = models.AdminRole# 页面当中的输入框会按照列表的顺序进行展示fields = ['username', 'password', "new_password", "role"]# 为密码框添加属性, 将它设置为密码输入框, 意味着之后在密码框里面输入数据的时候, 全部都是······这样展示。widgets = {"password": forms.PasswordInput}def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for item, field in self.fields.items():# 给输入框增加属性field.widget.attrs = {'class': 'form-control'}# 我们对密码那栏进行操作, 我们对密码框里面的内容进行加密处理并且存入数据库def clean_password(self):password = self.cleaned_data["password"]# 给密码加密, 用md5加密算法return pwd_data.md5(password)# 我们对确认密码那栏进行操作, 我们对确认密码框里面的内容进行加密处理并且存入数据库def clean_new_password(self):# 给确认密码进行加密new_password = pwd_data.md5(self.cleaned_data["new_password"])# 这里获取到的密码, 是已经加密过的, 因为上面的clean_password函数里面已经加密过pwd了。pwd = self.cleaned_data["password"]if pwd != new_password:raise ValidationError("两次密码不一致")return new_passworddef admin_add(request):title = "添加账号"if request.method == "GET":form = AdminAddModelForm()content = {"title": title,"form": form}return render(request, "admin/admin_operation.html", content)form = AdminAddModelForm(request.POST)if form.is_valid():form.save()return redirect("/admin_list/")return render(request, "admin/admin_operation.html", {"title": title, "form": form})

在自定义的modelform类里面, 有clean_password和clean_new_password两个函数, 它们都是用来做密码校验的, 就是判断两个输入框里面的密码是否一致, 就是我们所谓的确认密码的功能。不过我们在数据库里面, 没有new_password字段, 所以我们需要在modelform自定义类里面的最前面加上new_password = forms.CharField(widget=forms.PasswordInput), 这个是确认密码的输入框, 设置为密码格式, 包括不能忘记下面在构造函数__init__里面最后要加widgets = {“password”: forms.PasswordInput}, 这个是给输入密码的输入框设置为密码格式。admin_add函数里面, 内容和以前文章中写道的添加功能差不多, 所以这里不再赘述里面代码的含义。

配置路由:

urls.py:

"""project_simple URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from project_one.views import depart, user, assets, admin_roleurlpatterns = [path("admin_list/", admin_role.admin),path("admin/add/", admin_role.admin_add)
]

三、修改账号

admin_role.py代码:

class AdminModifyModelForm(forms.ModelForm):class Meta:model = models.AdminRole# 这里我们只需要修改用户名和角色的内容fields = ['username', 'role']def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for item, field in self.fields.items():field.widget.attrs = {'class': 'form-control'}def admin_modify(request, nid):title = "修改账号"obj = models.AdminRole.objects.filter(id=nid).first()if request.method == "GET":form = AdminModifyModelForm(instance=obj)content = {"title": title,"form": form}return render(request, "admin/admin_operation.html", content)form = AdminModifyModelForm(request.POST, instance=obj)if form.is_valid():form.save()return redirect("/admin_list/")return render(request, "admin/admin_operation.html", {"title": title, "form": form})

以上就是修改功能的代码, 没有什么特别要讲的地方, 就是fields里面只需要填写两个字段, username和role即可。

路由配置:

urls.py:

"""project_simple URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from project_one.views import depart, user, assets, admin_roleurlpatterns = [path("admin_list/", admin_role.admin),path("admin/add/", admin_role.admin_add),path("admin/<int:nid>/modify/", admin_role.admin_modify)
]

四、账号重置密码

admin_role.py:

class AdminResetPwdModelForm(forms.ModelForm):new_second_password = forms.CharField(widget=forms.PasswordInput, label="确认密码")class Meta:model = models.AdminRolefields = ['password']widgets = {"password": forms.PasswordInput}def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for item, field in self.fields.items():field.widget.attrs = {'class': 'form-control'}def clean_password(self):pwd = self.cleaned_data["password"]return pwd_data.md5(pwd)def clean_new_password(self):new_second_password = pwd_data.md5(self.cleaned_data["new_second_password"])pwd = self.cleaned_data["password"]if pwd != new_second_password:raise ValidationError("两次不一致")return new_second_passworddef admin_reset_pwd(request, nid):title_object = models.AdminRole.objects.filter(id=nid).first()title = f"重置<{title_object.username}>密码"if request.method == "GET":form = AdminResetPwdModelForm(instance=title_object)content = {"title": title, "form": form}return render(request, "admin/admin_operation.html", content)form = AdminResetPwdModelForm(request.POST, instance=title_object)if form.is_valid():form.save()return redirect("/admin_list/")return render(request, "admin/admin_operation.html", {"title": title, "form": form})

modelform里面的写法, 和新增账号的modelform里面的写法一模一样。这里的重置密码admin_reset_pwd函数里面要传入nid参数, 我们需要修改我们要修改那行数据里面的密码, 所以需要用nid来定位对应的id号。

路由配置:

urls.py

"""project_simple URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from project_one.views import depart, user, assets, admin_roleurlpatterns = [path("admin_list/", admin_role.admin),path("admin/add/", admin_role.admin_add),path("admin/<int:nid>/modify/", admin_role.admin_modify),path("admin/<int:nid>/reset/pwd/", admin_role.admin_reset_pwd)
]

五、删除账号功能

这个功能, 我想大家闭着眼睛, 都能写出来了, 那这里就不多解释代码的意思了, 直接上代码:

def admin_del(request, nid):models.AdminRole.objects.filter(id=nid).delete()return redirect("/admin_list/")

配置路由:

urls.py:

"""project_simple URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from project_one.views import depart, user, assets, admin_roleurlpatterns = [path("admin_list/", admin_role.admin),path("admin/add/", admin_role.admin_add),path("admin/<int:nid>/modify/", admin_role.admin_modify),path("admin/<int:nid>/reset/pwd/", admin_role.admin_reset_pwd),path("admin/<int:nid>/del/", admin_role.admin_del)
]

六、所有代码展示集合

我们把刚才写过的代码进行汇总:

前端页面html代码

admin_list.html:

{% extends "index/model_tmp.html" %}{% block content %}<div class="container"><a href="/admin/add/" class="btn btn-success">添加信息</a>{# 实现搜素查询 #}<div style="float: right"><form method="get"><div class="input-group" style="float: right;width: 300px;"><input type="text" class="form-control" name="search" placeholder="Search for..."><span class="input-group-btn"><button class="btn btn-default" type="submit">搜索</button></span></div></form></div><div class="panel panel-danger"><div class="panel-heading"><h3 class="panel-title">用户表</h3></div><div class="panel-body"><table class="table table-hover"><thead><tr><th>ID</th><th>用户名</th><th>密码</th><th>重置密码</th><th>角色</th></tr></thead><tbody>{% for data in data_list %}<tr><th scope="row">{{ data.id }}</th><td>{{ data.username }}</td><td>******</td><td><a href="/admin/{{ data.id }}/reset/pwd">重置密码</a></td><td>{{ data.get_role_display }}</td><td style="color: green"><a href="/admin/{{ data.id }}/modify"><span style="color: green;"class="glyphicon glyphicon-pencil"aria-hidden="true"></span></a><a href="/admin/{{ data.id }}/del/"><span style="color: red;"class="glyphicon glyphicon-trash"aria-hidden="true"></span></a></td></tr>{% endfor %}</tbody></table></div></div>{# 实现分页查询 #}<ul class="pagination">{{ page_string }}</ul></div>
{% endblock %}

admin_operation.html:

{% extends "index/model_tmp.html" %}
{% load static %}{% block css %}<link rel="stylesheet" href="{% static 'css/layui.css' %}">
{% endblock %}{% block content %}<div class="container"><h1>{{ title }}</h1><form method="post">{% csrf_token %}{% for filed in form %}
{#       filed.label这里面就是获取我们在models.py里面创建表格里面的每一个字段里面有个verbose_name这个参数的值         #}<label for="exampleInputEmail1">{{ filed.label }}</label>{{ filed }}{#       展示错误信息         #}<span style="color: red">{{ filed.errors.0 }}</span><br>{% endfor %}<button type="submit" class="btn btn-success">提交</button></form></div>
{% endblock %}{% block js %}{% endblock %}
后端代码

admin_role.py:

from django.core.exceptions import ValidationError
from django.shortcuts import render, redirect
from project_one.utils import pwd_data
from project_one.utils.PageData import PageData
from django import forms
from project_one import models# Create your views here.
def admin(request):data_list = models.AdminRole.objects.all()page_object = PageData(request, data_list)content = {"data_list": page_object.page_queryset,"page_string": page_object.page_html()}return render(request, "admin/admin_list.html", content)class AdminAddModelForm(forms.ModelForm):# 当前变量名如果和数据表字段一致,则会覆盖,如果不同名,则会添加。# 我们的数据库里面没有new_password字段, 所以会添加。# 这个是用来做确认密码框用的, 创建账号的时候, 有输入密码和确认密码两个框, 之后判断的时候得确保两个输入框里面的密码是一致的, 账号才能被创建。new_password = forms.CharField(widget=forms.PasswordInput, label="确认密码")class Meta:model = models.AdminRole# 页面当中的输入框会按照列表的顺序进行展示fields = ['username', 'password', "new_password", "role"]# 为密码框添加属性, 将它设置为密码输入框, 意味着之后在密码框里面输入数据的时候, 全部都是······这样展示。widgets = {"password": forms.PasswordInput}def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for item, field in self.fields.items():# 给输入框增加属性field.widget.attrs = {'class': 'form-control'}# 我们对密码那栏进行操作, 我们对密码框里面的内容进行加密处理并且存入数据库def clean_password(self):password = self.cleaned_data["password"]# 给密码加密, 用md5加密算法return pwd_data.md5(password)# 我们对确认密码那栏进行操作, 我们对确认密码框里面的内容进行加密处理并且存入数据库def clean_new_password(self):# 给确认密码进行加密new_password = pwd_data.md5(self.cleaned_data["new_password"])# 这里获取到的密码, 是已经加密过的, 因为上面的clean_password函数里面已经加密过pwd了。pwd = self.cleaned_data["password"]if pwd != new_password:raise ValidationError("两次密码不一致")return new_passworddef admin_add(request):title = "添加账号"if request.method == "GET":form = AdminAddModelForm()content = {"title": title,"form": form}return render(request, "admin/admin_operation.html", content)form = AdminAddModelForm(request.POST)if form.is_valid():form.save()return redirect("/admin_list/")return render(request, "admin/admin_operation.html", {"title": title, "form": form})class AdminModifyModelForm(forms.ModelForm):class Meta:model = models.AdminRolefields = ['username', 'role']def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for item, field in self.fields.items():field.widget.attrs = {'class': 'form-control'}def admin_modify(request, nid):title = "修改账号"obj = models.AdminRole.objects.filter(id=nid).first()if request.method == "GET":form = AdminModifyModelForm(instance=obj)content = {"title": title,"form": form}return render(request, "admin/admin_operation.html", content)form = AdminModifyModelForm(request.POST, instance=obj)if form.is_valid():form.save()return redirect("/admin_list/")return render(request, "admin/admin_operation.html", {"title": title, "form": form})class AdminResetPwdModelForm(forms.ModelForm):new_second_password = forms.CharField(widget=forms.PasswordInput, label="确认密码")class Meta:model = models.AdminRolefields = ['password']widgets = {"password": forms.PasswordInput}def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for item, field in self.fields.items():field.widget.attrs = {'class': 'form-control'}def clean_password(self):pwd = self.cleaned_data["password"]return pwd_data.md5(pwd)def clean_new_password(self):new_second_password = pwd_data.md5(self.cleaned_data["new_second_password"])pwd = self.cleaned_data["password"]if pwd != new_second_password:raise ValidationError("两次不一致")return new_second_passworddef admin_reset_pwd(request, nid):title_object = models.AdminRole.objects.filter(id=nid).first()title = f"重置<{title_object.username}>密码"if request.method == "GET":form = AdminResetPwdModelForm(instance=title_object)content = {"title": title, "form": form}return render(request, "admin/admin_operation.html", content)form = AdminResetPwdModelForm(request.POST, instance=title_object)if form.is_valid():form.save()return redirect("/admin_list/")return render(request, "admin/admin_operation.html", {"title": title, "form": form})def admin_del(request, nid):models.AdminRole.objects.filter(id=nid).delete()return redirect("/admin_list/")

pwd_data.py:

import hashlibSECRET_KEY = 'django-insecure-m@31x($s*0tgzm0$2(ct6izu)8oe$xa)@k7(&*7tkr*g(dbl)5'def md5(data):obj_md5 = hashlib.md5(SECRET_KEY.encode('utf-8'))obj_md5.update(data.encode('utf-8'))return obj_md5.hexdigest()

urls.py:

"""project_simple URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from project_one.views import depart, user, assets, admin_roleurlpatterns = [path("", depart.index),path("depart/", depart.depart),path("depart/add/", depart.add_depart),path("depart/<int:nid>/modify/", depart.depart_modify),path("depart/<int:nid>/del/", depart.del_depart),path("user/", user.user_info),path("user/add/", user.user_add),path("user/<int:nid>/modify/", user.user_modify),path("user/<int:nid>/del/", user.user_del),path("user/add/modelform", user.user_add_modelform),path("user/<int:nid>/modify/modelform", user.user_modify_modelform),path("assets_list/", assets.assets),path("assets/add/", assets.assets_add),path("assets/<int:nid>/modify/", assets.assets_modify),path("assets/<int:nid>/del/", assets.assets_del),path("admin_list/", admin_role.admin),path("admin/add/", admin_role.admin_add),path("admin/<int:nid>/modify/", admin_role.admin_modify),path("admin/<int:nid>/reset/pwd/", admin_role.admin_reset_pwd),path("admin/<int:nid>/del/", admin_role.admin_del)
]

七、运行结果

打开网页之后, 点击平台用户里面的登录账号。

在这里插入图片描述

进入到账号管理页面:

在这里插入图片描述

我们添加一个账号:

在这里插入图片描述

成功添加账号:

在这里插入图片描述

我们尝试修改数据:

我们将张三的角色改为领导:

在这里插入图片描述

修改成功:

在这里插入图片描述

我们尝试重置密码:

在这里插入图片描述

密码重置成功:

在这里插入图片描述

这个里面看不到密码, 因为在admin_list.html里面把它写成了******给它隐藏了。密码的数据是被加密过后存到数据库里面去的, 所以需要查看数据库里面的密码那个字段里面的值是否变化, 如果变化了就代表成功了。或者说在后端代码admin_role的modelform自定义校验类里面的clean的校验方法里面输出密码的内容, 也可以查看。

我们删除张三的数据:

在这里插入图片描述

数据删除成功。

以上就是关于账号管理功能, 代码和之前写的代码, 思路和逻辑都相差不大, 如果在写代码的时候遇到问题, 可以先翻一翻前面的文章去看是否有类似实现功能的代码。这篇文章的案例, 相当于是对以前的知识点进行了总结, 综合运用。不过在做账号管理功能的时候, 也有写细节需要注意。

以上就是Django的账号管理功能的所有内容了, 如果有哪里不懂的地方,可以把问题打在评论区, 欢迎大家在评论区交流!!!
如果我有写错的地方, 望大家指正, 也可以联系我, 让我们一起努力, 继续不断的进步.
学习是个漫长的过程, 需要我们不断的去学习并掌握消化知识点, 有不懂或概念模糊不理解的情况下,一定要赶紧的解决问题, 否则问题只会越来越多, 漏洞也就越老越大.
人生路漫漫, 白鹭常相伴!!!

相关文章:

  • 用Python做有趣的AI项目1:用 TensorFlow 实现图像分类(识别猫、狗、汽车等)
  • lvgl 实现横向滑动,并且捕获最中间那个元素
  • SpringCloud微服务架构
  • 基于先进MCU的机器人运动控制系统设计:理论、实践与前沿技术
  • VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
  • 用 C 语言实现通用的冒泡排序算法
  • UNO Less-to-More Generalization: 通过上下文生成解锁更多可控性
  • 使用UltraSigma给普源RIGOL示波器截图的方法
  • 基于 Python 的自然语言处理系列(86):DPO(Direct Preference Optimization)原理与实战
  • 【信息系统项目管理师】高分论文:论质量管理和进度管理(智慧旅游平台建设项目)
  • HBase协处理器深度解析:原理、实现与最佳实践
  • 基于FFmpeg命令行的实时图像处理与RTSP推流解决方案
  • 使用java代码注册onloyoffice账号 || 注册onloyoffice账号
  • vue中 vue.config.js反向代理
  • 计算机网络 | 应用层(3)-- 因特网中的电子邮件
  • 使用银行卡二要素API让支付更加安心
  • 北斗导航 | Transformer增强BiLSTM网络的GNSS伪距观测量误差探测
  • B. And It‘s Non-Zero
  • 提示词的神奇魔力——如何通过它改变AI的输出
  • 免费送源码:Java+ssm+HTML 三分糖——甜品店网站设计与实现 计算机毕业设计原创定制
  • 最高法报告重申保护创新主体权益:加大侵权损害赔偿力度
  • 巴黎奥运后红土首秀落败,郑钦文止步马德里站次轮
  • 中国太保一季度净赚96.27亿元降18.1%,营收同比下降1.8%
  • 美联储报告披露关税战冲击波:消费信心下降,经济担忧加深
  • 咖啡与乳腺健康之间,究竟有着怎样的复杂关系?
  • 苏炳添任暨南大学体育学院院长