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

Django基础

1.Django基础

  • 路由系统
  • 视图
  • 模板
  • 静态文件和媒体文件
  • 中间件
  • ORM(时间)

2.路由系统

本质上:URL和函数的对应关系。

2.1 传统的路由

from django.contrib import admin
from django.urls import path
from apps.web import viewsurlpatterns = [path('home/', views.home),path('news/<int:nid>/edit/', views.news),path('article/', views.article),
]
from django.shortcuts import render, HttpResponsedef home(request):return HttpResponse("成功")def news(request, nid):print(nid)page = request.GET.get("page")return HttpResponse("新闻")def article(request):nid = request.GET.get("nid")print(nid)return HttpResponse("文章")
  • int,整数
  • str,字符串 /
  • slug,字母+数字+下滑线±
  • uuid,uuid格式
  • path,路径,可以包含 /

2.2 正则表达式路由

  • 在django1版本用的多。
  • 在django2+版本用的少

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXwMdB9Z-1691375046429)(assets/image-20220626103534535.png)]

2.3 路由分发

假如:200个功能。

inlucde + app(一般),将功能拆分不到不同的app中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbOWXroE-1691375046430)(assets/image-20220626105027266.png)]

手动路由分发,可以与app无关。

path('user/add/', views.login),
path('user/delete/', views.login),
path('user/edit/', views.login),
path('user/list/', views.login),path('user/', ([path('add/', views.login),path('delete/', views.login),   # /user/delete/path('edit/', views.login),path('list/', views.login),], None, None)),纯粹帮助提取功能的URL,防止重复编写。

路由分发的本质:

  • URL对应函数

    path('user/add/', views.login),
    
  • URL对应元组

    path('user/add/',    (元素,appname元素,namespance元素)    ),
    
    path('user/add/',    include("apps.api.urls")    ),
    path('user/add/',     ([],None,None)     ),
    

小结

  • include或手动元组列表,本质相同。

  • 应用场景和意义,想要把一些URL前缀提取出来。

    path('user/add/', views.login),
    path('user/delete/', views.login),
    path('user/edit/', views.login),
    path('user/list/', views.login),path('user/', ([path('add/', views.login),path('delete/', views.login),   # /user/delete/path('edit/', views.login),path('list/', views.login),], None, None)),path('users', include(([path('add/', views.login),path('delete/', views.login),  # /user/delete/path('edit/', views.login),path('list/', views.login),], None))),include("apps.api.urls")  # 一般是每个app中urls
    urlpatterns = []
    

2.4 name

给一个路由起个名字 + 根据名字反向生成URL。

urlpatterns = [path('login/', views.login),
]
# 很多功能,很多URL
urlpatterns = [path('login/', views.login, name="v1"),path('auth/', views.auth, name="v2"),
]

有了名字后,以后一般有两处会用到:

  • 在视图函数中生成URL

    from django.urls import reverse
    url = reverse("v2")   # /auth/
    url = reverse("v1")   # /login/
    
  • HTML模板,页面上有一个a标签,添加xx。

    <a href="/xxx/xxx/xx/">添加</a>
    
    <a href="{% url 'v1' %}">添加</a>
    <a href="{% url 'v2' %}">添加</a>
    
  • 扩展

    以后做权限管理,让name属性配合。
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUKG1jgl-1691375046431)(assets/image-20220626142656240.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-81GAhKi4-1691375046431)(assets/image-20220626143129040.png)]

2.5 namespace

辅助name。

  • 主路由

    from django.urls import path, re_path, include# 很多功能,很多URL
    urlpatterns = [path('api/', include("apps.api.urls",namespace='x1')),path('web/', include("apps.web.urls",namespace='x2')),
    ]
    
  • api/urls.py

    from django.urls import path, re_path
    from . import views
    # 很多功能,很多URL
    urlpatterns = [path('login/', views.login,name="login"),path('auth/', views.auth, name='auth'),
    ]
    
  • web/urls.py

    from django.urls import path, re_path
    from . import views
    # 很多功能,很多URL
    urlpatterns = [path('home/', views.home,name='home'),path('order/', views.order,name='order'),path('auth/', views.order, name='auth'),
    ]
    

以后再某个URL或者视图中反向生成:

from django.urls import reverse
url = reverse("x1:login")    # /api/login/
url = reverse("x1:order")    # /web/login/url = reverse("x1:auth")    # /api/login/
url = reverse("x2:auth")    # /web/login/

两个扩展:

  • namespace需要设置app_name

    urlpatterns = [path('api/', include("apps.api.urls", namespace='x1')),
    ]
    
    from django.urls import path, re_path
    from apps.api import views# 很多功能,很多URL
    urlpatterns = [path('login/', views.login, name="login"),path('auth/', views.auth, name='auth'),
    ]app_name = "api"
    
  • 手动分发
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qvxThf7O-1691375046432)(assets/image-20220626145020707.png)]

赠送:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mT4As72A-1691375046432)(assets/image-20220626145624565.png)]

2.4 最后的 / 如何解决?

APPEND_SLASH = True

path('login/', views.login),http://127.0.0.1:8000/login/   成功http://127.0.0.1:8000/login    django,重定向301http://127.0.0.1:8000/login/   成功
path('login', views.login),http://127.0.0.1:8000/login    成功http://127.0.0.1:8000/login    http://127.0.0.1:8000/login/   失败

APPEND_SLASH = False

path('login/', views.login),http://127.0.0.1:8000/login/   成功http://127.0.0.1:8000/login    失败
path('login', views.login),http://127.0.0.1:8000/login/   失败http://127.0.0.1:8000/login    成功

2.5 当前匹配对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTUHOgGy-1691375046432)(assets/image-20220626151042970.png)]

有什么用呀?

某用户,具有一些权限。   permissions = ["xx","login",'account']
某用户,具有一些权限。   permissions = ["login",'account']

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mPKe7yWu-1691375046433)(assets/image-20220626151524165.png)]

小结

  • 常见 & 必须掌握

    • 传统路由
    • 路由分发
    • name
  • 差点意思

    • 正则
    • namapace
    • 当前对象
  • 补充小知识点(与django路由无关,看源码时有关)

    • 关于 partial

      def _xx(a1, a2):return a1 + a2data = _xx(11, 22)
      print(data)
      from functools import partialdef _xx(a1, a2):return a1 + a2yy = partial(_xx, a2=100)data = yy(2)
      print(data)
      

3.视图

3.1 文件or文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIjOlyV8-1691375046433)(assets/image-20220626154246243.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rat9xJcT-1691375046434)(assets/image-20220626154404724.png)]

3.2 相对和绝对导入urls

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ff5ADYMl-1691375046434)(assets/image-20220626154723460.png)]

注意实现:不要再项目根目录做相对导入。

原则:

  • 绝对导入
  • 相对导入(层级深)

3.3 视图参数

urlpatterns = [path('login/', account.login, name="login"),path('auth/', order.auth, name='auth'),
]
from django.shortcuts import HttpResponsedef login(request):return HttpResponse("login")

requests是什么呢?

对象,包裹,可以放很多东西。requests是一个对象,存放了浏览器给咱们发过来的所有内容,所以含有:
- 请求相关所有的数据: 当前访问的url、请求方式、...
- django额外添加的数据
from django.shortcuts import HttpResponsedef login(request):# 1.当前URL  /api/login/print(request.path_info)# 2.URL传递的参数print(request.GET)print(request.GET.get("age"))# 3.请求方式  GET/POSTprint(request.method)# 4.如果post请求,传递请求体(原始数据)print(request.body)  # b'{"code":"083Sjmll2yla694F3bll2DguCM2SjmlG","unionId":"oP6QCsyT_9bk1dfSaVf0GEV5Y-yE"}'  b'v1=123&v2=456'# 4.1 请求体+请求头       b'v1=123&v2=456'  +  content-type:application/x-www-form-urlencodedprint(request.POST)print(request.POST.get("v1"))print(request.POST.get("v2"))# 4.2 请求体+请求头   文件print(request.FILES)  # 文件格式           + multipart/form-dataprint(request.FILES.get("n1"))print(request.FILES.get("n2"))# 5.请求头# {'Content-Length': '', 'Content-Type': 'text/plain', 'Host': '127.0.0.1:8000', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Sec-Ch-Ua': '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"', 'Sec-Ch-Ua-Mobile': '?0', 'Sec-Ch-Ua-Platform': '"macOS"', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Sec-Fetch-Site': 'none', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-User': '?1', 'Sec-Fetch-Dest': 'document', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7', 'Cookie': 'csrftoken=CdidpKSGbLxzmOXnbmlkvrZep1eJmKLAA81T73UjcjxEnMOa4YOZqtc849AkYfUy'}print(request.headers)# 5.1 请求头有个特殊的cookie# request.headers['cookie']  # 'csrftoken=CdidpKSGbLxzmOXnbmlkvrZep1eJmKLAA81T73UjcjxEnMOa4YOZqtc849AkYfUy;session=xxxx'# {'csrftoken': 'CdidpKSGbLxzmOXnbmlkvrZep1eJmKLAA81T73UjcjxEnMOa4YOZqtc849AkYfUy'}print(request.COOKIES)# 6.requests中其他值print(request.resolver_match)return HttpResponse("login")

3.4 返回值

  • HttpResponse
  • JsonResponse
  • render
  • redirect
from django.shortcuts import HttpResponse, redirect, render
from django.http import JsonResponsedef auth(request):passdef login(request):# 1.获取请求数据print(request)# 2.根据请求数据进行条件的判断 GET/POST   GET.get("xx")    POST.get("xx")# 3.返回数据# 3.1 字符串/字节/文本数据(图片验证码)# return HttpResponse("login")# 3.2 JSON格式(前后端分离、app小程序后端、ajax请求)# data_dict = {"status": True, 'data': [11, 22, 33]}# return JsonResponse(data_dict)# 3.3 重定向# return redirect("https://www.baidu.com")# return redirect("http://127.0.0.1:8000/api/auth/")# return redirect("http://127.0.0.1:8000/api/auth/")# return redirect("/api/auth/")# return redirect("/api/auth/")  # name## from django.urls import reverse# url = reverse("auth")# return redirect(url)  # name# return redirect("auth")# 3.4 渲染# - a.找到 'login.html' 并读取的内容,问题:去哪里找?# -   默认先去settings.TEMPLATES.DIRS指定的路径找。(公共)# -   按注册顺序每个已注册的app中找他templates目录,去这个目录中寻找'login.html'# -   一般情况下,原则,那个app中的的模板,去哪个那个app中寻找。# - b.渲染(替换)得到替换完成的字符串# - c.返回浏览器return render(request, 'api/login.html')

3.5 响应头

from django.shortcuts import HttpResponse, redirect, render
from django.http import JsonResponsedef login(request):res = HttpResponse("login")res['xx1'] = "hahaha"res['xx2'] = "hahaha"res['xx3'] = "hahaha"res.set_cookie('k1',"aaaaaaaa")res.set_cookie('k2',"bbbbbb")return res

3.6 FBV和CBV

  • FBV,视图用函数的形式编写。(目前主流)
  • CBV,视图用类的形式编写。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfq7zxYZ-1691375046434)(assets/image-20220626174330406.png)]

请注意,这一些都是表象,本质一模一样。

4.静态资源

静态资源:

  • 开发需要:css、js、图片。

    - 根目录的 /static/
    - 已经app目录下载 /static/ 文件夹下
    
  • 媒体文件:用户上传的数据(excel/pdf/video)

    - 根目录的 /media/
    

4.1 静态文件

INSTALLED_APPS = [# 'django.contrib.admin',# 'django.contrib.auth',# 'django.contrib.contenttypes',# 'django.contrib.sessions',# 'django.contrib.messages','django.contrib.staticfiles',"apps.api.apps.ApiConfig","apps.web.apps.WebConfig",
]
...STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),
)
  • 顺序:…

  • 多app开发:各自app的图片放在各自 /static/app名字/。。。

  • 在开发过程中

    • 禁止

      <img src="/static/api/1.png">
      
    • 建议

      {% load static %}<!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title>Title</title>
      </head>
      <body>
      <h1>登录页面</h1>
      <a href="/xxx/xxxxx/">调换dao xx</a>
      <a href="{% url 'login' %}">跳转</a><img src="{% static 'api/1.png' %}"></body>
      </html>
      

4.2 媒体文件

urls.py

from django.contrib import admin
from django.urls import path, re_path, include
from django.conf.urls.static import static
from django.conf import settingsfrom apps.api import views# 很多功能,很多URL
urlpatterns = [path('api/', include('apps.api.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duT6ORoE-1691375046434)(assets/image-20220626181505349.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aFqkNcs5-1691375046435)(assets/image-20220626181515182.png)]

相关文章:

Django基础

1.Django基础 路由系统视图模板静态文件和媒体文件中间件ORM&#xff08;时间&#xff09; 2.路由系统 本质上&#xff1a;URL和函数的对应关系。 2.1 传统的路由 from django.contrib import admin from django.urls import path from apps.web import viewsurlpatterns …...

HTML,url,unicode编码

目录标题 HTML实体编码urlcode编码unicode编码小结基础例题高级例题 HTML实体编码 实体表示&#xff1a; 以&符号开始&#xff0c;后面跟着一个预定义的实体的名称&#xff0c;或是一个#符号以及字符的十进制数字。 例&#xff1a; <p>hello</p> <!-- 等同…...

Hbase-热点问题(数据存储倾斜问题)

1. 危害 某一台regionserver消耗过多&#xff0c;承受过多的并发量&#xff0c;时间长机器性能下降&#xff0c;甚至宕机 2. 解决 可以通过设计rowkey预分区的方法解决 比如可以预分区120个&#xff0c;1月的数据存到1-10分区&#xff0c;每个月的数据存到10个分区&#xff…...

一个基于Java线程池管理的开源框架Hippo4j实践

线程池痛点 线程池是一种基于池化思想管理线程的工具&#xff0c;使用线程池可以减少创建销毁线程的开销&#xff0c;避免线程过多导致系统资源耗尽。在高并发以及大批量的任务处理场景&#xff0c;线程池的使用是必不可少的。线程池常见痛点&#xff1a; 线程池随便定义&…...

源码解析Flink源节点数据读取是如何与checkpoint串行执行

文章目录 源码解析Flink源节点数据读取是如何与checkpoint串行执行Checkpoint阶段StreamTask类变量actionExecutor的实现和初始化小结 数据读取阶段小结 总结 源码解析Flink源节点数据读取是如何与checkpoint串行执行 Flink版本&#xff1a;1.13.6 前置知识&#xff1a;源节点…...

进阶:Docker容器管理工具——Docker-Compose使用

文章目录 前言Compose大杀器编排服务 1、docker-compose安装curl方式安装增加可执行权限查看版本 2、Docker-compose.yaml命令3、 docker-compose实战4、Docker网络路由docker的跨主机网络路由**问题由来**:方案两台机分别配置路由表ip_forward配置 总结 前言 容器的管理工具&…...

策略模式(Strategy)

策略模式是一种行为设计模式&#xff0c;就是定义一系列算法&#xff0c;然后将每一个算法封装起来&#xff0c;并使它们可相互替换。本模式通过定义一组可相互替换的算法&#xff0c;实现将算法独立于使用它的用户而变化。 Strategy is a behavioral design pattern that def…...

webpack基础知识十:与webpack类似的工具还有哪些?区别?

一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割&#xff0c;组织和打包应用。每个模块完成一个特定的子功能&#xff0c;所有的模块按某种方法组装起来&#xff0c;成为一个整体(bundle) 在前端领域中&#xff0c;并非只有webpack这一款…...

分享kubernetes部署:基于Ansible自动安装kubernetes

基于Ansible自动安装kubernetes 环境准备 我们以如下机器环境为例&#xff1a; 开放端口&#xff1a; 控制平面节点 工作节点 请按如上中规定的开放端口&#xff0c;或关闭防火墙&#xff1a; systemctlstopfirewalld&&\ systemctldisablefirewalld 安装常用工具 sudo…...

【Kubernetes部署篇】基于Ubuntu20.04操作系统搭建K8S1.23版本集群

文章目录 一、集群架构规划信息二、系统初始化准备(所有节点同步操作)三、安装kubeadm(所有节点同步操作)四、初始化K8S集群(master节点操作)五、添加Node节点到K8S集群中六、安装Calico网络插件七、测试CoreDNS可用性 一、集群架构规划信息 pod网段&#xff1a;10.244.0.0/16…...

c++--二叉树应用

1.根据二叉树创建字符串 力扣 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需要省略所有不影响字符…...

以太网DHCP协议(十)

目录 一、工作原理 二、DHCP报文 2.1 DHCP报文类型 2.2 DHCP报文格式 当网络内部的主机设备数量过多是&#xff0c;IP地址的手动设置是一件非常繁琐的事情。为了实现自动设置IP地址、统一管理IP地址分配&#xff0c;TCPIP协议栈中引入了DHCP协议。 一、工作原理 使用DHCP之…...

企业服务器器中了360后缀勒索病毒怎么解决,勒索病毒解密数据恢复

随着网络威胁的增加&#xff0c;企业服务器成为黑客攻击的目标之一。近期&#xff0c;上海某知名律师事务所的数据库遭到了360后缀的勒索病毒攻击&#xff0c;导致企业服务器内的数据库被360后缀勒索病毒加密。许多重要的数据被锁定无法正常读取&#xff0c;严重影响了企业的正…...

详解Kafka分区机制原理|Kafka 系列 二

Kafka 系列第二篇&#xff0c;详解分区机制原理。为了不错过更新&#xff0c;请大家将本号“设为星标”。 点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;优质资源及时送达 上一篇文章介绍了 Kafka 的基本概念和术语&#xff0c;里面有个概念是 分区(Part…...

CSS学习记录(基础笔记)

CSS简介: CSS 指的是层叠样式表* (Cascading Style Sheets)&#xff0c;主要用于设置HTML页面的文字内容&#xff08;字体、大小、对齐方式&#xff09;&#xff0c;图片的外形&#xff08;边框&#xff09; CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素 CSS 节省…...

Chatgpt AI newbing作画,文字生成图 BingImageCreator 二次开发,对接wxbot

开源项目 https://github.com/acheong08/BingImageCreator 获取cookie信息 cookieStore.get("_U").then(result > console.log(result.value)) pip3 install --upgrade BingImageCreator import os import BingImageCreatoros.environ["http_proxy"]…...

PPT忘记密码如何解除?

PPT文件所带有的两种加密方式&#xff0c;打开密码以及修改权限&#xff0c;两种密码在打开文件的时候都会有相应的提示&#xff0c;但不同的是两种加密忘记密码之后是不同的。 如果忘记了打开密码&#xff0c;我们就没办法打开PPT文件了&#xff1b;如果是忘记了修改密码&…...

绘制曲线python

文章目录 import matplotlib.pyplot as plt# 提供的数据 x= [1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6,6.1,6.2…...

CentOs 8 常见问题处理

CentOs 8 常见问题处理 vmware虚拟机新增网卡操作 vmware虚拟机新增网卡操作 [rootcentos ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0…...

OpenAI将GPT-4设置为ChatGPT Plus付费用户的默认模型

OpenAI最近为ChatGPT引入了一系列新功能&#xff0c;这些更新旨在增强用户体验&#xff0c;提供更多指导和更多的功能。其中最显著的功能之一是将GPT-4设置为ChatGPT Plus付费用户的默认模型&#xff0c;这意味着付费订阅用户无需手动切换到其他公开可用的语言模型&#xff0c;…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...

VSCode 使用CMake 构建 Qt 5 窗口程序

首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...