Django快速入门

文章目录

  • 一、安装
    • 1.创建虚拟环境(virtualenv和virtualenvwrapper)
    • 2. 安装django
  • 二、改解释器
  • 三、创建一个Django项目
  • 四、项目目录
    • 项目同名文件夹/settings.py
  • 五、测试服务器启动
  • 六、数据迁移
  • 七、创建应用
  • 八、基本视图
    • 1. 返回响应 response
    • 2. 渲染模板
  • 九、Http协议前后端交互
  • 十、Django框架整体流程
  • 十一、路由Route的基本使用
    • 1. 直接访问视图函数,没有使用子路由
    • 2. 使用子路由
  • 十二、基本模板
  • 十三、定义模型
    • 没有提示可以这样设置
  • 十四、Django自带的Admin后台管理系统


Django官网:https://docs.djangoproject.com/en/4.2/

文档推荐看英文,看不懂就换中文吧

在这里插入图片描述

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

2020年,Django 3.0发布。

2022年,Django 4.0发布。Django 4.0 将支持 Python 3.8、3.9与3.10

2023年,Django 4.2LTS发布,长期支持版本,会维护3年,在企业中我们建议使用LTS版本

Django每2年会推出全新的大版本。

在这里插入图片描述
LTS是长期支持版本的意思。

一、安装

1.创建虚拟环境(virtualenv和virtualenvwrapper)

创建虚拟环境

# 先打开cmd
# 安装virtualenv (windows操作系统)
pip install virtualenv virtualenvwrapper-win
# Linux
pip install virtualenv virtualenvwrapper

# workon 查看虚拟环境
workon

# mkvirtualenv 创建新的虚拟环境
mkvirtualenv env

# rmvirtualenv 删除虚拟环境
# rmvirtualenv env

# 进入虚拟环境
workon env

我们来装我们自己的jango

# 创建虚拟环境
mkvirtualenv envdjango4

# 进入虚拟环境
workon envdjango4

2. 安装django

建议使用镜像,安装命令后面最好加一个4.2的版本,可以是4.2.1 也可以是4.2,用的是国内镜像douban,也可以用其他镜像,这样速度会快一些

pip install django==4.2 -i https://pypi.douban.com/simple

4.2是LTS长期支持版本,推荐使用,如果不写则会安装最新版本。

测试django是否安装成功
pip show django

在这里插入图片描述
在这里插入图片描述

pip freeze 会输出所有在本地已安装的包(但不包括 pip、wheel、setuptools 等自带包),若需要输出内容与 pip list 一致,需使用 pip freeze -all
pip list 查看所有的包

在这里插入图片描述

二、改解释器

在这里插入图片描述
点击添加本地解释器
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

选择C:\Users\用户名\Envs\虚拟环境\Scripts\python.exe,点击OK

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击OK,等待下面的进度条走完,等他加载完

三、创建一个Django项目

  • 方式一: 进入到指定要存放项目的目录,执行 django-admin startproject MyFirstDjango 来创一个名字为 MyFirstDjango 的工程
    在这里插入图片描述
    创建项目后,默认的目录结构:

在这里插入图片描述

  • 方式二: 使用Pycharm专业版创建Django项目

File > new Project

在这里插入图片描述
在这里插入图片描述

C:\Users\用户名\Envs\虚拟环境\Scripts\python.exe

在这里插入图片描述

点击OK

在这里插入图片描述

创建项目后,目录结构会比第一种方式多一些文件夹:

在这里插入图片描述

四、项目目录

jango项目下面会有一个一样名字的文件夹,还有一些文件,这些东西名字不要去改它。

manage.py :
	· manage是管理的意思,manage.py是用于启动项目或者执行一些命令的文件。
	· 是Django用于管理本项目的命令行工具,之后进行站点运行,数据库自动生成等都是通过本文件完成。

MyDjangoPro2/__init__.py
	· 告诉python该目录是一个python包,方便我们用Python管理,暂无内容,后期一些工具的初始化可能会用到

MyDjangoPro2/settings.py
	· Django项目的配置文件,默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等
	
MyDjangoPro2/urls.py
	· 维护项目的URL路由映射,即定义当客户端访问时由哪个模块进行响应。
	
MyDjangoPro2/wsgi.py
	· 全称为Python Web Server Gateway Interface,即Python服务器网关接口,是Python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一般不需要修改。
	
MyDjangoPro2/asgi.py
	· 定义ASGI的接口信息,和WSGI类似,在3.0以后新增ASGI,相比WSGI,ASGI实现了异步处理,用于启动异步通信服务,比如:实现在线聊天等异步通信功能(类似Tornado异步框架)。它是用于存储asgi设定的文件,如果使用ASGI部署django会用到,一般情况下不需要更改。

templates 模板目录

user 就是刚刚设置的应用名称
	· migrations 迁移文件夹,以后迁移文件都会放在这里面
	· admin.py 后台管理系统,如果要配置后台管理系统就需要用到它
	· apps.py 就是当前应用的配置
		里面也没写什么,name = 'user',就是告诉你应用名称是什么
	· models.py 模型,存放模型的地方
	· tests.py 单元测试,如果要写单元测试用例的话可以在这写 
	· views.py 视图,写视图函数都在这里

项目同名文件夹/settings.py

"""
Django settings for MyDjangoPro2 project.

Generated by 'django-admin startproject' using Django 4.2.

这里是他的文档
For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""

from pathlib import Path

''' 
    BASE_DIR 项目根目录
    Path(__file__) 当前这个文件的绝对路径
    .parent.parent 父目录的父目录
    Path(__file__).resolve().parent.parent得到的就是项目的路径
    以后我们去找项目目录下的文件或文件夹,就用 BASE_DIR / "子路径"
'''
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

# 快速开始的文档
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/

# SECRET_KEY 项目唯一的密钥,这个是方便它在内部加密、解密处理的时候 用到。
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-5ot-%22ub-!mi#-*hth-ac=dvo^)n1q*kbs+@lrsbv@2e1pq=g'

# SECURITY WARNING: don't run with debug turned on in production!
# 是否使用调试模式,
# True:表示调试模式,自动重启,改了代码不用我们手动重启了,一般用于开发过程;
# False: 表示非调试模式,一般用于上线部署
DEBUG = True

# 被允许的域名或IP
# 写法:
# *:表示通配符,匹配所有IP,也就是所有的IP都能访问我   ALLOWED_HOSTS = ['*']  	表示可以被其他任何电脑来访问我(局域网)
# 上线后可以指定某个IP,指定其他哪些服务器来访问我,如果所有电脑都能访问就是*
## ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']

# Application definition
# 定义应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',  # 这里也可以直接写上 'user',

    # 我们自己写的应用一定要在这里定义一下,如果不写后面有一些功能会受到限制

    # 定义自己的应用
    # 'user',
]

# 中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',  # 安全处理的,防止csrf攻击
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

# 根路由
ROOT_URLCONF = 'MyDjangoPro2.urls'  # 就是: 项目根目录\MyDjangoPro2\urls.py

# 模板
TEMPLATES = [
    # 可以配置多个模板,一般配置一个模板就可以了
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 指定模板文件夹
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

# WSGI的目录: 根目录\MyDjangoPro2\wsgi.py
WSGI_APPLICATION = 'MyDjangoPro2.wsgi.application'

# Database 数据库
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

DATABASES = {
    'default': {  # 默认情况用到的是sqlite3数据库,经常用在手机端,或者一些小型数据库里面,因为他是单线程的
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',  # 这里路径会放在根目录下面,如果没有,运行之后就有了
    }
    # 注意:我们这里要用的话,只能用关系型数据库。如果用mysql要注意,它还要指定域名,IP、端口、用户名密码
}

# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
# 密码验证的东西,这些都是Django内部的东西
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

# Internationalization 国际化
# https://docs.djangoproject.com/en/4.2/topics/i18n/
# 主要是地区、语言的配置
LANGUAGE_CODE = 'en-us'  # 语言,默认英语en-us, 中文zh-hans。它主要是后台管理系统会变中文

TIME_ZONE = 'UTC'  # 时区

USE_I18N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images) 静态文件,主要是为html服务的
# https://docs.djangoproject.com/en/4.2/howto/static-files/

STATIC_URL = 'static/'

# Default primary key field type 默认主键字段的类型
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

五、测试服务器启动

python manage.py runserver [ ip:port ]

如果只是改端口可以不用写IP,python manage.py runserver 8001

注意IP不能随便改,要么 127.0.0.1 ,要么就写成 0.0.0.0 (表示可以让局域网其他电脑来访问我),python manage.py runserver 0.0.0.0:8000

可以直接进行服务运行 默认执行起来的端口是8000

也可以自己指定ip和端口:
1. 监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip):
	python manage.py runserver 0.0.0.0:8000
2.同时在settings.py中将
	ALLOWED_HOSTS=['*']  (让所有的电脑都能访问)
3.在其他局域网电脑上可以通过在浏览器输入 Django项目所在电脑的 IP:8000 来访问

在这里插入图片描述

注意:You have 18 unapplied migration(s) 意思是你有18个没有被应用的迁移文件。这个迁移文件每次创建新项目都会有这个提示,因为它创建项目的同时,在它内部有代码,它内部默认给了你18个迁移文件,它已经生成了迁移文件了,但这个迁移文件并没有同步到迁移文件里面去。这行信息你可以管也可以不管,因为我们现在还没有写自己的模型,如果你要用它内部的这些迁移文件,那么就要去做迁移。

如果你要退出,按 Ctrl+C

在这里插入图片描述

如果用python manage.py runserver 0.0.0.0:8000启动,浏览器输入http://0.0.0.0:8000/ 是访问不了的,用http://127.0.0.1:8000/http://localhost:8000/ 或者 http://自己的ip地址:8000/ 可以访问
cmd ipconfig 查看自己ip
在这里插入图片描述
在这里插入图片描述

六、数据迁移

迁移的概念: 就是将模型映射到数据库的过程
生成迁移文件: python manage.py makemigrations
执行迁移: python manage.py migrate

不需要初始化迁移文件夹,每个应用默认有迁移文件夹migrations

db.sqlite3 迁移文件生成的表格直接打开是打不开的,我们直接使用PyCharm 数据库的可视化吧
在这里插入图片描述

在这里插入图片描述
db.sqlite3 是不需要创建数据库名字的,直接就是表,tables下这些是jango自带的一些数据库表

在这里插入图片描述

七、创建应用

如果项目当中功能很多模块很多,我们可能需要再创建多个App。

python manage.py startapp App创建名称为App的应用

我们创建新的App在settings.py默认情况下是没有注册(定义)的,使用应用前需要将应用配置到项目中,在settings.py中将应用加入到 INSTALLED_APPS选项中,后面就能使用这个App了。

应用目录介绍:
__init__.py:
	其中暂无内容,使得app成为一个包
admin.py:
	管理站点模型的声明文件,默认为空
apps.py:
	应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
models.py:
	添加模型层数据类文件
views.py:
	定义URL相应函数,视图函数
migrations包:
	自动生成,生成迁移文件的
tests.py:
	测试代码文件

在这里插入图片描述

八、基本视图

1. 返回响应 response

我们打开 user\views.py

from django.shortcuts import render

from django.http import HttpResponse


# 视图函数Views
def index(request):
    # pass
    # 返回响应 response
    return HttpResponse('hello Django!!!')

路由在MyDjangoPro2\urls.py 里写

from django.contrib import admin
from django.urls import path

from user.views import *

urlpatterns = [
    path('admin/', admin.site.urls),

    # 路由url
    path('index/', index)
]

python manage.py runserver 启动之后浏览器输入 http://127.0.0.1:8000/index/

在这里插入图片描述

2. 渲染模板

在视图模板里面除了返回 HttpResponse(‘hello Django!!!’) 这样的内容以外,还可以以渲染模板的方式。

在user应用中新建一个文件夹templates注意单词不要写错了。在里面我们新建一个html,叫 index.html

在这里插入图片描述

在这里插入图片描述
index.html 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index页面</title>
</head>
<body>
    <h1>Index页</h1>
    <hr>
    <h3>Hello Django</h3>
</body> 
</html>

user\views.py

from django.shortcuts import render

from django.http import HttpResponse

# 视图函数Views
def index(request):
    # pass
    # 返回响应 response
    # return HttpResponse('hello Django!!!')

    # 渲染模板render,渲染html
    return render(request, "index.html")

http://127.0.0.1:8000/index/

在这里插入图片描述

九、Http协议前后端交互

在前后端交互当中,前端后端用的协议是http协议

  1. 先请求后响应,响应完之后连接就会断开
  2. 我们可以认为它其实是一个短连接 或者 无连接。在它内部其实是基于TCP协议的,它也会有三次握手,但是这是内部的,我们不关心,只需要管HTTP协议就行了。
  3. 请求方式:常用的就是Get和Post
  4. 常见的状态码:
HTTP状态码分类
200 成功,操作被成功接收并处理
3XX表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向
4XX客户端错误,请求包含语法错误或无法完成请求
5XX这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错
  1. 组成:请求头、请求体、响应头、响应体

在这里插入图片描述

我们在浏览器访问 http://127.0.0.1:8000/index/ 。相当于在前端请求,我们访问这个地址的时候,我们路由会先做匹配它会匹配端口后面 index/ 这一串东西,它会自动去找项目的根路由,发现 index 跟刚才网址 index 是一样的,匹配成功然后就会去访问 index 的视图函数。
在这里插入图片描述

视图函数在哪里?在 user.views 里面当中的 index

在这里插入图片描述
index 执行内部的代码,要返回响应,一定要返回响应,如果不返回响应程序会报错。返回的时候 render 的作用就是将内部的html文件 index.html 内容拿出来,如果后面加参数我们可以做渲染,如果加了参数渲染进去之后它会将变量在 index.html 中去做渲染,渲染之后会将整个完整的字符串(html字符串)拿出来返回给前端。前端拿到数据之后,就会将我们拿到的数据在浏览器当中直接显示,浏览器会自动解析你的html文件。

在这里插入图片描述

十、Django框架整体流程

在这里插入图片描述

十一、路由Route的基本使用

urls.py 我们一般叫它根路由

在这里插入图片描述

1. 直接访问视图函数,没有使用子路由

在这里插入图片描述

MyDjangoPro2\views.py 代码

from django.shortcuts import render

from django.http import HttpResponse


# 视图函数Views
def index(request):
    # pass
    # 返回响应 response
    # return HttpResponse('hello Django!!!')

    # 渲染模板render,渲染html
    return render(request, "index.html")


def index2(request):
    return HttpResponse('index2')

2. 使用子路由

我们每一个应用都可以写子路由,一般写一个

在user下面新建 urls.py

from django.urls import path
from user.views import *

# 子路由
urlpatterns = [
    # url路由写法:django v1.x ,v2.x
    # url(r'^index/',index),

    # v2.x , v3.x , v4.x
    # path('index/', index),
    # path('index2/', index2)
    path('index/', index, name="index"),  # 加个名字name,一般名字跟路由名字尽量匹配一些
    path('index2/', index2, name="index2")

]

urlpatterns单词不能写错

MyDjangoPro2\urls.py 代码

from django.contrib import admin
from django.urls import path, include

from user.views import *

urlpatterns = [
    path('admin/', admin.site.urls),

    # 路由url
    # 1. 直接访问视图函数,没有使用子路由
    # path('index/', index),
    # path('index2/', index2)

    # 2. 使用子路由
    # 一个应用对应一个子路由
    # path('', include("应用名称.子路由")) 第一个参数写不写路由的名字都可以
    path('user/', include("user.urls"))

]

访问一下 http://127.0.0.1:8000/user/index/ http://127.0.0.1:8000/user/index2/
在这里插入图片描述

十二、基本模板

模板实际上就是我们用HTML写好的页面
创建模板文件夹templates,在模板文件夹中创建模板文件
在views中去加载渲染模板,使用render函数: return render(request, 'xxx')

十三、定义模型

在models.py中引入models

from django.db import models

创建自己的模型类,但切记要继承自 models.Model

案例:使用模型定义用户,并在模板上显示用户列表

# 用户表 :
		用户名称 - name
		年龄 - age
		性别 - sex
		是否删除 - is_deleted
from django.db import models


# 模型Model   <==>  表结构
#  类属性     <==>  表字段
#  对象       <==>  表的一条记录

class UserModel(models.Model):
    name = models.CharField(max_length=30, unique=True)  # 对应SQL:  name varchar(30) unique
    age = models.IntegerField(default=18)  # 对应SQL: age int default 18
    sex = models.CharField(max_length=20)  # 对应SQL: sex int varchar(20)
    is_deleted = models.BooleanField(default=False)


'''
表的字段
用户名称 - name
年龄 - age
性别 - sex
是否删除 - is_deleted
'''

# 注意:
# 数据迁移:models表结构一旦改变就需要重新迁移
# 迁移的概念: 就是将模型映射到数据库的过程
# 生成迁移文件: python manage.py makemigrations
# 执行迁移: python manage.py migrate

注意:模型创建好之后我们需要做数据迁移
数据迁移:models表结构一旦改变就需要重新迁移
迁移的概念: 就是将模型映射到数据库的过程
生成迁移文件: python manage.py makemigrations
执行迁移: python manage.py migrate

在这里插入图片描述

输入命令生成迁移文件 python manage.py makemigrations,刷新一下,然后我们看到生成了一个文件 user\migrations\0001_initial.py ,0001表示第一个迁移文件

· dependencies
	依赖的迁移文件,后面都是依赖前面的迁移文件,因为是第一个迁移文件,所以没有依赖
· operations 操作
	- migrations.CreateModel	创建模型
		* fields字段
			如果我们自己定义的字段当中并没有去写auto_created、primary_key或者不定义AutoField的,它会自动创建一个id这么一个主键,并且会自动增长的整数列而且是主键,给的注释叫'ID',来表示它是唯一的

在这里插入图片描述

输入命令执行迁移 python manage.py migrate ,我们双击打开db.sqlite3 ,刷新一下

在这里插入图片描述

模型创带好之后就需要去用了,我们添加一些数据吧。

在这里插入图片描述

在这里插入图片描述

  1. user\views.py ,先写视图函数,一般我们的模型都是在视图函数里面去用的,所以在最开始可以去导一个包from user.models import * 所有的模型都导过来
from user.models import *

def get_users(request):
    # 模型操作: 获取所有user
    users = UserModel.objects.all()
    return render(request, "users.html", {'users': users})  # 传参{名字:数据}
  1. 新建模板 user\templates\users.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>所有用户</title>
</head>
<body>
    <h2>所有用户</h2>
    <hr>
    <ul>
        
        {% for user in users %}
            <li>{{ user.name }},{{ user.age }}</li>
        {% endfor %}
        
    </ul>
</body>
</html>
  1. 写路由 user\urls.py
path('get_users/', get_users, name='get_users') # name可写可不写
  1. 浏览器访问,http://127.0.0.1:8000/user/get_users/
    在这里插入图片描述

没有提示可以这样设置

我们写的时候没有提示是因为PyCharm没有设置模板语言 File > Settings > Languages & Frameworks > Template Languages

在这里插入图片描述
在这里插入图片描述

十四、Django自带的Admin后台管理系统

在admin.py中将model 加入后台管理:
     admin.site.register(Grade)
创建超级用户: python manage.py createsuperuser
    用户名 要自己写,如果你不写它默认会有一个你的电脑名
    邮箱地址 不用写,直接回车
    密码 写的时候要注意它没有任何提示,也不会出现*,我的密码是123456,真正以后用的话还是建议写复杂点
    再次确认密码
    弹出信息,你的密码太简单了太短了,至少八个字符,看你是否要使用,Y就是的使用

访问admin后台: http://127.0.0.1:8000/admin/

user\admin.py

from django.contrib import admin

from user.models import *

# 后台管理系统的使用:
# 1. 在这里注册对应的模型
admin.site.register(UserModel)
# 2. 需要创建超级管理员的账号和密码 python manage.py createsuperuser
# 3. 根路由urls.py中默认有      path('admin/', admin.site.urls),
# 4. 访问admin后台管理系统: http://127.0.0.1:8000/admin/

在这里插入图片描述

创建好之后在我们的数据库里面打开auth_user表,可以看到

在这里插入图片描述
访问admin后台: http://127.0.0.1:8000/admin/ ,输入我们刚才创建的超级用户admin1 ,密码123456。
在这里插入图片描述
在这里插入图片描述

点进去我们自己的表User models
在这里插入图片描述
我们也可以让它显示我们想要的数据,这样子改,回到 user\models.py,可以将__str__改掉

在这里插入图片描述

然后浏览器刷新一下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果要修改直接点进去就行了

在这里插入图片描述
我们如果想中文页面的话, settings.py 改一下LANGUAGE_CODE

LANGUAGE_CODE = 'zh-hans'  # 语言,默认英语en-us, 中文zh-hans。

在这里插入图片描述

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

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

相关文章

【01】基础知识:typescript安装及使用,开发工具vscode配置

一、typescript 了解 typeScript 是由微软开发的一款开源的编程语言。 typeScript 是 javascript 的超级&#xff0c;遵循最新的 es6、es5规范。 typeScript 扩展了 javaScript 的语法。 typeScript 更像后端 java、C# 这样的面向对象语言&#xff0c;可以让 js 开发大型企…

stm32项目(8)——基于stm32的智能家居设计

目录 一.功能设计 二.演示视频 三.硬件选择 1.单片机 2.红外遥控 3.红外探测模块 4.光敏电阻模块 5.温湿度检测模块 6.风扇模块 7.舵机 8.WIFI模块 9.LED和蜂鸣器 10.火焰传感器 11.气体传感器 四.程序设计 1.连线方式 2.注意事项 3.主程序代码 五.课题意义…

ffmpeg+intel核显实现硬解码

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前言二、检查方法1.图形法2.nvidia-smi3.intel-gpu-tools 三、安装使用1.libva-dev2.libva-utils3.编译安装4.测试1.vainfo2.ffmpeg测试解码 总结 前言 之…

文档控件DevExpress Office File API v23.1新版亮点 - 支持.NET MAUI

DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库&#xff0c;不用安装Microsoft Office&#xff0c;就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…

LeetCode150道面试经典题-删除有序数组中的重复项(简单)

1.题目 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c…

工程英语翻译怎样做效果比较好

我们知道&#xff0c;高质量的工程翻译可以有效指导工程项目操作的执行&#xff0c;但市场上专业的工程英语翻译人才严重不足。那么&#xff0c;工程英语翻译难吗&#xff0c;怎样翻译工程英语比较好&#xff1f; 业内人士指出&#xff0c; 工程翻译具有用词专业、涉及领域广、…

stm32 cubemx ps2无线(有线)手柄

文章目录 前言一、cubemx配置二、代码1.引入库bsp_hal_ps2.cbsp_hal_ps2.h 2.主函数 前言 本文讲解使用cubemx配置PS2手柄实现对手柄的按键和模拟值的读取。 很简单&#xff0c;库已经封装好了&#xff0c;直接就可以了。 文件 一、cubemx配置 这个很简单&#xff0c;不需要…

Android Camera预览画面变形问题

csdn 问题 安卓camera1在预览时&#xff0c;预览画面看起来被拉伸了&#xff0e; 如图&#xff0c;圆形的盖子&#xff0c;变成椭圆形了&#xff0e; 代码 默认流程&#xff0c;如下为大致的打开摄像头并进行预览显示的代码 private Camera mCamera null; private Surfa…

LeetCode算法递归类—验证二叉搜索树

目录 98. 验证二叉搜索树 题解&#xff1a; 代码&#xff1a; 运行结果&#xff1a;​编辑 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含…

ChatGPT将会成为强者的外挂?—— 提高学习能力

目录 前言 一、提高学习力 &#x1f9d1;‍&#x1f4bb; 1. 快速找到需要的知识 2. 组合自己的知识体系 3. 内化知识技能 二、提问能力❗ 三、思维、创新能力 &#x1f31f; 1. 批判性思维 1.1 八大基本结构进行批判性提问 1.2 苏格拉底的提问分类方法 2. 结构化思…

【设计模式】责任链的基本概念及使用Predicate灵活构造校验链

文章目录 1. 概述1.1.背景1.2.责任链模式的概念 2.责任链的基本写法2.1.链表实现2.2.数组实现 3.Predicate校验链2.1.使用Predicate改写代码2.1.更丰富的条件拓展 4.总结 1. 概述 1.1.背景 在最近的开发中遇到了这么一个需求&#xff0c;需要对业务流程中的各个参数做前置校验…

Nginx的优化和防盗链(面试高频!!!)

Nginx的优化和防盗链 全篇高能&#xff01;&#xff01;&#xff01;&#xff01;干货较多&#xff01;&#xff01;&#xff01;&#xff01;本篇含面试高频题&#xff1a; 修改配置文件时&#xff0c;先备份&#xff01;&#xff01;&#xff01;以便回滚&#xff01;&…

【Nginx】Nginx的优化和防盗链

nginx版本迭代比较快 *工作中&#xff0c;在发版期&#xff0c;通常先备份文件并备注时间&#xff0c;方便后期故障后回档 例&#xff1a; cp nginx.conf nginx.conf.bak.2023.0805 隐藏版本号的两种方法*** 1.修改配置文件 vim /usr/local/nginx/conf/nginx.conf 在http模…

【Leetcode】链表中两数之和(模拟加法器)(击败100%)

step by step. 题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&…

Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例

HTTP的认证方式之DIGEST 1.是什么2.认值流程2.1 客户端发送请求2.2 服务器返回质询信息2.2.1 质询参数2.2.2 质询举例 2.3 客户端生成响应2.4 服务器验证响应2.5 服务器返回响应 3.算法3.1 SHA-2563.1.1 Response3.1.2 A13.1.3 A2 3.2 MD53.2.1 Request-Digest3.2.2 A13.2.3 A2…

百度智能云:千帆大模型平台接入Llama 2等33个大模型,上线103个Prompt模板

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

[免费在线] 将 PDF 转换为 Excel 或 Excel 转换为 PDF | 5 工具

有了免费的在线 PDF 转换器&#xff0c;您可以轻松免费在线将 PDF 转换为 Excel 或 Excel 转换为 PDF。这篇文章为您筛选了 5 个最常用的工具。要从存储介质恢复错误删除或丢失的 PDF 文档、Excel 电子表格、Word 文件或任何其他文件&#xff0c;您可以使用免费的数据恢复程序 …

人大金仓三大兼容:Oracle迁移无忧

企业级应用早期的架构模式是C/S&#xff08;Client/Server&#xff09;模式&#xff0c;Client做人机交互逻辑的呈现&#xff0c;Sever做业务计算逻辑的实现。这就类似餐馆的运作模式&#xff0c;Client是前台的服务员提供点菜和上菜服务&#xff0c;而Server则是后厨完成菜品的…

辽宁线上3D三维虚拟工厂生产仿真系统应用场景及优势

工厂虚拟仿真是一种基于计算机技术和虚拟现实技术的数字化解决方案&#xff0c;它可以通过模拟工厂中的设备、流程和操作&#xff0c;来为工程师和操作人员提供了一个沉浸式的虚拟环境&#xff0c;帮助他们更好地了解和优化工厂生产过程。 工厂VR三维可视化技术为工业生产提供了…

拂袖一挥,zipfile秒列zip包内容

使用wxpython列出文件夹中的zip文件及内容 最近在做一个文件管理的小工具,需要列出选择的文件夹下的所有zip压缩文件,并在点击某个zip文件时能够显示其中的内容。为此我使用了wxpython来实现这个功能。 1. 导入需要的模块 首先导入程序需要的模块: import wx import os imp…
最新文章