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

初始Flask框架

摘要Flask 作为 Python 生态中最受欢迎的轻量级 Web 框架以其 “微内核、易扩展” 的设计理念成为 Web 开发初学者的首选工具。本文基于 Flask 核心基础从框架概述、环境搭建、路由视图、模板渲染、表单处理、项目结构到生产部署全方位拆解 Flask 的核心知识点补充了图片未覆盖的请求上下文、钩子函数、错误处理等进阶内容并通过完整的博客案例实现从理论到实践的落地。全文逻辑清晰、代码可直接运行适合零基础开发者快速入门也可作为运维、后端开发人员的 Flask 学习手册。一、Flask 框架概述在 Python 的 Web 框架生态中Django 以 “大而全” 著称而 Flask 则以 “小而精” 的定位占据了半壁江山。Flask 诞生于 2010 年由 Armin Ronacher 开发核心设计理念是简洁、灵活、易用被称为 “微框架”—— 这里的 “微” 并非功能薄弱而是指 Flask 仅提供 Web 开发的核心工具路由、请求处理、响应生成不强制开发者遵循特定的项目结构所有扩展功能如数据库、表单、认证都由开发者按需选择。1.1 Flask 的核心依赖Flask 的底层依赖两个关键 Python 库支撑起整个框架的核心能力WerkzeugFlask 的底层 WSGI 工具库提供了 WSGI 接口、HTTP 请求 / 响应处理、路由匹配、调试工具等核心能力是 Flask 处理网络请求的基石。Jinja2功能强大的模板引擎支持动态生成 HTML 页面实现 Python 代码与 HTML 的分离让页面渲染更灵活、可维护性更高。1.2 Flask 的核心优势学习成本低核心 API 简洁易懂零基础开发者可在 1 小时内搭建出可运行的 Web 应用无需掌握复杂的框架约定。灵活性极强不强制项目结构、数据库选型、模板引擎开发者可自由组合技术栈如搭配 SQLAlchemy 做 ORM、MongoDB 做数据库。扩展性优秀拥有丰富的第三方扩展Flask-SQLAlchemy、Flask-Login、Flask-Migrate 等可快速实现复杂功能。适合快速原型开发无论是小型工具、个人博客还是企业级中后台系统Flask 都能高效支撑开发。二、Flask 环境搭建从安装到第一个应用2.1 安装 FlaskFlask 的安装极其简单通过 Python 的包管理工具pip即可一键完成bash运行pip install flask安装完成后可通过以下命令验证是否安装成功bash运行flask --version # 输出类似Flask 2.3.32.2 第一个 Flask 应用创建一个名为app.py的 Python 文件写入以下代码python运行# 从flask包中导入Flask类 from flask import Flask # 创建Flask应用实例__name__参数用于Flask识别当前模块的根路径 app Flask(__name__) # 定义路由将根路径/与hello_world视图函数绑定 app.route(/) def hello_world(): # 视图函数返回的内容将作为HTTP响应返回给客户端 return Hello, World! # 启动应用当脚本被直接运行时启动Flask开发服务器 if __name__ __main__: # debugTrue开启调试模式代码修改后自动重启服务器错误时显示详细信息 app.run(debugTrue)2.3 运行与访问应用在终端中执行以下命令启动应用bash运行python app.pyFlask 会启动一个本地开发服务器默认监听127.0.0.1:5000打开浏览器访问http://127.0.0.1:5000即可看到Hello, World!的页面第一个 Flask 应用就完成了2.4 代码深度解析Flask(__name__)__name__是 Python 的内置变量代表当前模块的名称Flask 通过它定位静态文件、模板文件的根目录是应用实例的核心参数。app.route(/)路由装饰器用于将 URL 路径与视图函数绑定当用户访问对应 URL 时Flask 会自动调用绑定的视图函数。app.run(debugTrue)debug参数仅用于开发环境生产环境必须关闭避免代码泄露、安全风险同时可通过host0.0.0.0让服务器对外网可访问port8080修改端口号。三、Flask 路由与视图函数Web 应用的核心路由是 Flask 的核心负责将用户的 URL 请求映射到对应的处理逻辑视图函数是 Web 应用的 “导航系统”。3.1 基础路由与视图函数基础路由是最常用的路由形式直接绑定固定 URLpython运行app.route(/about) def about(): return 这是关于我们的页面访问http://127.0.0.1:5000/about即可触发about函数返回对应内容。3.2 动态路由传递 URL 参数Flask 支持在 URL 中定义动态参数实现灵活的页面渲染语法为参数名python运行app.route(/greet/name) def greet(name): return fHello, {name}!当访问/greet/张三时name参数会被自动赋值为张三返回Hello, 张三!。还可以指定参数类型如int:id仅匹配整数、float:price仅匹配浮点数避免类型错误python运行app.route(/user/int:user_id) def get_user(user_id): return f用户ID{user_id}3.3 支持多种 HTTP 请求方法HTTP 协议定义了多种请求方法GET、POST、PUT、DELETE 等Flask 默认路由仅支持 GET 请求可通过methods参数指定允许的请求方法python运行# 仅允许POST请求访问该路由 app.route(/submit, methods[POST]) def submit(): return 表单提交成功 # 同时支持GET和POST请求 app.route(/login, methods[GET, POST]) def login(): if request.method POST: # 处理表单提交 return 登录成功 else: # 渲染登录页面 return 请输入账号密码若用户用不允许的方法访问如用 GET 访问仅支持 POST 的路由Flask 会返回405 Method Not Allowed错误。3.4 补充知识点URL 反转与重定向图片未覆盖的核心知识点URL 反转和重定向是实际开发中高频使用的功能。3.4.1 URL 反转url_for通过视图函数名反向生成 URL避免硬编码 URL提高代码可维护性python运行from flask import Flask, url_for, redirect app Flask(__name__) app.route(/) def index(): # 反转greet视图的URL传入name参数 greet_url url_for(greet, nameFlask) return f跳转链接a href{greet_url}点击问候/a app.route(/greet/name) def greet(name): return fHello, {name}!即使后续修改了路由的 URL 路径只要视图函数名不变url_for会自动生成正确的 URL无需修改所有硬编码的链接。3.4.2 重定向redirect将用户请求跳转到其他路由常用于登录后跳转、表单提交后跳转python运行app.route(/login, methods[GET, POST]) def login(): if request.method POST: # 验证账号密码成功后重定向到首页 return redirect(url_for(index)) return render_template(login.html)四、Jinja2 模板引擎动态渲染 HTML 页面Flask 本身仅负责处理请求和响应页面渲染依赖 Jinja2 模板引擎实现 Python 代码与 HTML 的分离让页面更易维护。4.1 模板基础render_template的使用Flask 默认从项目根目录的templates文件夹中读取模板文件通过render_template函数渲染模板并传递动态数据创建templates文件夹在其中创建greet.htmlhtml!DOCTYPE html html langen head meta charsetUTF-8 titleFlask示例/title /head body h1Hello, {{ name }}!/h1 /body /html在app.py中渲染模板python运行from flask import Flask, render_template app Flask(__name__) app.route(/greet/name) def greet(name): # 渲染greet.html模板将name变量传递给模板 return render_template(greet.html, namename) if __name__ __main__: app.run(debugTrue)模板中的{{ name }}是 Jinja2 的变量占位符会被传入的name值替换。4.2 模板继承与块复用页面结构对于复杂网站多个页面通常有相同的头部、底部Jinja2 的模板继承功能可实现代码复用避免重复编写。4.2.1 基础模板base.html定义页面的通用结构用{% block 块名 %}定义可被子模板覆盖的区域html!DOCTYPE html html langen head meta charsetUTF-8 title{% block title %}我的网站{% endblock %}/title /head body header h1欢迎来到我的网站/h1 nav a href/首页/a a href/about关于我们/a /nav /header div classcontent {% block content %}{% endblock %} /div footer pcopy; 2025 我的网站/p /footer /body /html4.2.2 子模板index.html通过{% extends base.html %}继承基础模板覆盖对应块的内容html{% extends base.html %} {% block title %}首页{% endblock %} {% block content %} h2欢迎来到首页/h2 p这是网站的首页内容/p {% endblock %}子模板仅需编写差异化内容大幅减少重复代码统一网站风格。4.3 补充知识点Jinja2 常用语法图片仅覆盖了基础变量和继承以下是实际开发中高频使用的 Jinja2 语法4.3.1 循环语法html{% for post in posts %} div classpost h3{{ post.title }}/h3 p{{ post.content }}/p /div {% else %} p暂无文章/p {% endfor %}{% else %}在循环列表为空时执行用于处理空数据场景。4.3.2 条件判断html{% if user.is_login %} p欢迎回来{{ user.name }}/p {% else %} a href/login请登录/a {% endif %}4.3.3 过滤器对变量进行格式化处理如{{ name|upper }}转大写、{{ time|datetimeformat }}格式化时间htmlp文章发布时间{{ post.create_time|strftime(%Y-%m-%d %H:%M) }}/p4.3.4 宏Macro类似 Python 的函数封装可复用的 HTML 代码块html{% macro render_post(post) %} div classpost h3{{ post.title }}/h3 p{{ post.content }}/p /div {% endmacro %} {# 调用宏 #} {{ render_post(post1) }} {{ render_post(post2) }}五、Flask 表单处理与用户输入Flask-WTF 实战Web 应用离不开表单登录、注册、提交内容等原生表单处理繁琐验证、CSRF 防护Flask-WTF 扩展可简化表单开发提供表单类、验证器、CSRF 防护等功能。5.1 安装 Flask-WTFbash运行pip install flask-wtf5.2 创建表单类通过继承FlaskForm定义表单类指定字段类型和验证规则python运行from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired, Length, Email app Flask(__name__) # 必须设置secret_key用于CSRF令牌加密 app.secret_key s3cr3t_k3y_2025 # 生产环境需使用复杂的随机密钥 # 定义表单类 class NameForm(FlaskForm): # 姓名字段DataRequired确保非空Length限制长度 name StringField(姓名, validators[DataRequired(), Length(min2, max20)]) # 邮箱字段Email验证邮箱格式 email StringField(邮箱, validators[DataRequired(), Email()]) # 提交按钮 submit SubmitField(提交) app.route(/, methods[GET, POST]) def index(): form NameForm() # 验证表单是否提交且通过验证 if form.validate_on_submit(): name form.name.data email form.email.data return f提交成功姓名{name}邮箱{email} # 渲染表单模板 return render_template(index.html, formform) if __name__ __main__: app.run(debugTrue)5.3 表单模板index.htmlhtml!DOCTYPE html html langen head meta charsetUTF-8 titleFlask表单/title /head body h1请输入信息/h1 form methodPOST {# 自动生成CSRF令牌防止跨站请求伪造 #} {{ form.csrf_token }} div {{ form.name.label }}br {{ form.name(size32) }}br {# 显示验证错误信息 #} {% for error in form.name.errors %} span stylecolor: red;{{ error }}/span {% endfor %} /div div {{ form.email.label }}br {{ form.email(size32) }}br {% for error in form.email.errors %} span stylecolor: red;{{ error }}/span {% endfor %} /div div {{ form.submit() }} /div /form /body /html5.4 核心验证器说明Flask-WTF 提供了丰富的验证器满足各类表单需求验证器功能DataRequired()确保字段非空Length(min2, max50)限制输入长度Email()验证邮箱格式EqualTo(password)验证两个字段值相等如密码确认NumberRange(min1, max100)限制数字范围URL()验证 URL 格式5.5 补充知识点CSRF 防护原理Flask-WTF 的 CSRF 防护是 Web 安全的核心原理如下服务器生成随机的 CSRF 令牌存储在用户的 Cookie 中同时嵌入表单中。用户提交表单时必须携带表单中的 CSRF 令牌服务器验证令牌与 Cookie 中的一致。第三方网站无法获取用户的 Cookie 中的令牌因此无法伪造请求有效防止跨站请求伪造攻击。六、Flask 项目结构与生产部署6.1 标准 Flask 项目结构随着应用复杂度提升单文件app.py会变得难以维护需采用标准的项目结构plaintext/my_flask_app ├── /app # 应用主目录 │ ├── /templates # HTML模板文件 │ │ ├── base.html │ │ ├── index.html │ │ └── ... │ ├── /static # 静态文件CSS、JS、图片 │ │ ├── /css │ │ ├── /js │ │ └── /images │ ├── __init__.py # 应用初始化文件 │ ├── routes.py # 路由与视图函数 │ ├── forms.py # 表单类定义 │ └── models.py # 数据库模型如SQLAlchemy模型 ├── /venv # 虚拟环境可选 ├── requirements.txt # 依赖包列表 └── run.py # 应用启动文件__init__.py负责创建 Flask 应用实例、初始化扩展如数据库、表单是应用的入口python运行from flask import Flask def create_app(): app Flask(__name__) app.secret_key s3cr3t_k3y # 注册蓝图路由拆分 from app.routes import main app.register_blueprint(main) return app蓝图Blueprint图片未覆盖的核心知识点用于拆分大型应用的路由避免单文件路由过多难以维护将不同功能的路由拆分到不同文件。6.2 生产环境部署Flask 自带的开发服务器仅用于开发生产环境需使用专业的 WSGI 服务器Gunicorn 反向代理Nginx部署。6.2.1 安装 Gunicornbash运行pip install gunicorn6.2.2 启动 Gunicorn 服务器bash运行# -w 4表示启动4个工作进程run:app表示run.py中的app实例 gunicorn -w 4 run:appGunicorn 是 Python 生态中最流行的 WSGI 服务器支持多进程、高并发适合生产环境。6.2.3 Nginx 反向代理配置Nginx 作为反向代理处理静态文件请求、转发动态请求到 Gunicorn提升性能和安全性nginxserver { listen 80; server_name your_domain.com; # 处理静态文件 location /static/ { alias /path/to/my_flask_app/app/static/; } # 转发动态请求到Gunicorn location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }6.3 补充知识点Flask 请求上下文与应用上下文图片未覆盖的核心进阶知识点是理解 Flask 运行原理的关键6.3.1 请求上下文Request ContextFlask 为每个请求创建独立的请求上下文存储请求相关的信息request、session等开发者可在视图函数中直接访问python运行from flask import request app.route(/submit, methods[POST]) def submit(): # 直接访问request对象获取表单数据 title request.form.get(title) return f标题{title}request对象包含请求的所有信息表单数据、请求头、请求方法、IP 等。session对象用于存储用户会话数据基于 Cookie 加密存储实现用户登录状态保持。6.3.2 应用上下文Application Context存储应用全局相关的信息current_app、gcurrent_app指向当前运行的 Flask 应用实例g用于存储请求级别的全局数据如数据库连接。6.3.3 钩子函数HooksFlask 提供钩子函数在请求的不同生命周期执行特定逻辑无需在每个视图函数中重复编写app.before_request在每个请求处理前执行如验证用户登录状态app.after_request在每个请求处理后、响应发送前执行如添加响应头app.teardown_request在请求结束后执行如关闭数据库连接app.errorhandler(404)捕获 404 错误自定义错误页面示例python运行app.before_request def before_request(): # 所有请求处理前验证用户是否登录 if not session.get(user_id) and request.path ! /login: return redirect(url_for(login))七、实战案例从零搭建简单博客应用结合前面的知识点我们来实现一个完整的简单博客应用支持文章提交、展示功能。7.1 项目结构plaintext/simple_blog ├── /app │ ├── /templates │ │ └── index.html │ └── __init__.py ├── app.py └── requirements.txt7.2app.py代码python运行from flask import Flask, render_template, request # 创建Flask应用实例 app Flask(__name__) # 用列表存储所有文章实际项目中使用数据库 posts [] # 首页路由支持GET和POST请求 app.route(/, methods[GET, POST]) def index(): if request.method POST: # 获取表单提交的标题和内容 title request.form.get(title) content request.form.get(content) # 将文章添加到列表 if title and content: posts.append({title: title, content: content}) # 渲染模板传递文章列表 return render_template(index.html, postsposts) # 启动应用 if __name__ __main__: app.run(debugTrue)7.3templates/index.html模板html!DOCTYPE html html langen head meta charsetUTF-8 title简单博客/title style .post { margin: 20px 0; padding: 15px; border: 1px solid #eee; } form { margin: 20px 0; } /style /head body h1欢迎来到我的博客/h1 !-- 文章提交表单 -- h2发布新文章/h2 form methodPOST div label fortitle标题/labelbr input typetext idtitle nametitle required stylewidth: 300px;brbr /div div label forcontent内容/labelbr textarea idcontent namecontent required rows10 cols50/textareabrbr /div button typesubmit发布文章/button /form !-- 文章列表 -- h2文章列表/h2 {% if posts %} ul {% for post in posts %} li classpost h3{{ post.title }}/h3 p{{ post.content }}/p /li {% endfor %} /ul {% else %} p暂无文章快来发布第一篇吧/p {% endif %} /body /html7.4 运行与测试安装依赖pip install flask启动应用python app.py访问http://127.0.0.1:5000即可提交文章、查看已发布的文章一个简单的博客就完成了7.5 代码解析数据存储用 Python 列表posts存储文章实际项目中需替换为数据库如 SQLite、MySQL通过 Flask-SQLAlchemy 操作。表单处理通过request.form获取表单数据验证非空后添加到列表。模板渲染用 Jinja2 的{% for %}循环遍历文章列表动态渲染页面。八、Flask 学习进阶与避坑指南8.1 学习进阶路线数据库集成学习 Flask-SQLAlchemyORM 框架实现数据库的增删改查。用户认证学习 Flask-Login实现用户注册、登录、权限管理。RESTful API 开发学习 Flask-RESTful开发前后端分离的 API 接口。异步支持Flask 2.0 支持异步视图结合async/await提升性能。容器化部署用 Docker 打包 Flask 应用结合 Docker Compose 实现一键部署。8.2 常见避坑指南调试模式生产环境禁用debugTrue会暴露代码、允许远程执行代码生产环境必须关闭。secret_key安全secret_key是 CSRF、Session 加密的核心生产环境需使用复杂的随机密钥禁止硬编码在代码中用环境变量存储。静态文件路径Flask 默认从/static路径访问静态文件模板中用url_for(static, filenamecss/style.css)生成路径避免硬编码。请求上下文手动推送在视图函数外使用request、current_app时需手动推送应用上下文python运行with app.app_context(): # 在此处可访问current_app print(current_app.config[SECRET_KEY])表单验证错误处理在模板中必须显示表单错误信息提升用户体验。九、总结本文从 Flask 的核心概念出发全面覆盖了环境搭建、路由视图、模板渲染、表单处理、项目结构、生产部署等核心知识点补充了图片未覆盖的 URL 反转、蓝图、请求上下文、钩子函数等进阶内容并通过完整的博客案例实现了从理论到实践的落地。Flask 的核心魅力在于简洁与灵活它不限制开发者的技术选型让开发者可以根据需求自由组合工具无论是小型个人项目还是企业级应用都能高效支撑。希望本文能帮助你快速掌握 Flask 的核心用法开启你的 Web 开发之旅附录常用 Flask 扩展推荐扩展名称功能Flask-SQLAlchemyORM 框架简化数据库操作Flask-Login用户认证与会话管理Flask-Migrate数据库迁移工具Flask-Mail邮件发送功能Flask-Caching缓存管理Flask-RESTfulRESTful API 开发Flask-SocketIO实时通信WebSocket

相关文章:

初始Flask框架

摘要Flask 作为 Python 生态中最受欢迎的轻量级 Web 框架,以其 “微内核、易扩展” 的设计理念,成为 Web 开发初学者的首选工具。本文基于 Flask 核心基础,从框架概述、环境搭建、路由视图、模板渲染、表单处理、项目结构到生产部署&#xff…...

政务帮办新范式:基于检索增强与多智能体协同的智能系统实践

一、引言:政务帮办的挑战与智能化需求 在数字化转型浪潮中,政务服务正从传统的人工办理向智能化帮办演进。然而,当前政务帮办系统普遍存在三类典型问题: 1.1 现有三类系统的局限性 基于预定义规则的传统流程系统 优势:处理标准化业务(如社保基数核定、公积金提取)时表…...

高效掌握Ryujinx:从入门到精通的开源Switch模拟器实战指南

高效掌握Ryujinx:从入门到精通的开源Switch模拟器实战指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx作为一款用C#编写的开源Nintendo Switch模拟器&#xff0…...

高并发场景下Agent任务分发与状态同步方案,AI实践教程

Agent架构在高并发客服场景中的任务分发与状态同步机制设计一、问题本质与核心挑战在高并发客服场景中,Agent架构的设计核心是解决海量并发请求与多Agent协作之间的矛盾。当用户咨询量在高峰期呈指数级增长时,传统的同步处理架构会迅速崩溃,表…...

3步彻底清除Windows系统OneDrive残留:专业卸载方案深度解析

3步彻底清除Windows系统OneDrive残留:专业卸载方案深度解析 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller 你是否发现OneDrive在…...

Java微服务容器化新范式:GraalVM静态镜像+Seccomp白名单+gVisor沙箱(三重隔离方案已通过CNCF安全审计)

第一章:Java微服务容器化新范式:GraalVM静态镜像Seccomp白名单gVisor沙箱(三重隔离方案已通过CNCF安全审计)现代Java微服务在云原生环境中正面临启动慢、内存高、攻击面广三大瓶颈。本章介绍的三重隔离方案,将GraalVM …...

国产化工控机浪潮下:C#上位机统信UOS+鲲鹏架构全栈适配零踩坑指南

去年给天津滨海新区某汽车零部件工厂做工控系统国产化改造,客户的硬指标没有任何商量余地:原有Windows平台的C#焊接上位机系统,必须无缝迁移到统信UOS 20专业版鲲鹏920工控机,724小时稳定运行,满足等保2.0三级要求&…...

BetterNCM-Installer技术指南:从部署到定制的全方位解决方案

BetterNCM-Installer技术指南:从部署到定制的全方位解决方案 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 核心功能解析 1.1 插件架构概览 痛点:用户常因不…...

神秘“欢乐马“空降屠榜,碾压Seedance 2.0,视频AI又变天了?

文章目录 前言榜单突变:神秘模型空降第一查无此人?这匹马到底从哪儿来的技术深扒:这马到底强在哪儿第一个就是"稳"第二个是"快"第三个是"全" 对比Seedance 2.0:神仙打架开源普惠?这可能…...

springcloud-alibaba基于springcloud的电子商城系统_80k11211_zl047

前言 基于Spring Cloud的电子商城系统是面向现代电商场景的分布式微服务解决方案,旨在解决传统单体架构在高并发、可扩展性、灵活性等方面的瓶颈一、项目介绍 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:to…...

泛型:像“填空”一样写类型,让你的代码从“复制粘贴”中解放

你是不是遇到过这种场景:写了一个函数,处理数字的版本写一遍,处理字符串的版本再写一遍,处理数组的又写一遍……最后代码里全是长得差不多的“双胞胎”。今天我们来学TypeScript的泛型——一个能让你写一次、处处用的“类型模板”…...

代码随想录算法训练营第六天 | Leetcode 454.四数相加 | 383.赎金信 | 15.三数之和 | 18.四数之和

day6 – 哈希表part02 454.四数相加 力扣题目链接:454. 四数相加 II - 力扣(LeetCode)文章讲解:第454题.四数相加II | 哈希表 | map | 统计查找 | 代码随想录视频讲解:学透哈希表,map使用有技巧&#xff…...

YOLO + SubspaceAD:一张良品图,检出所有未知缺陷

YOLO + SubspaceAD:一张良品图,检出所有未知缺陷 当YOLO遇上CVPR 2026子空间建模,工业缺陷检测迎来质变 一、痛点直击:缺陷检测的“三座大山” 第一座山:缺陷样本少,种类严重失衡。 工业生产追求“零缺陷”,导致真实缺陷样本极度稀缺,每十万件产品中往往仅出现3—5件次…...

CMake Converter终极指南:三步实现Visual Studio到CMake的自动化迁移

CMake Converter终极指南:三步实现Visual Studio到CMake的自动化迁移 【免费下载链接】cmakeconverter This project aims to facilitate the conversion of Visual Studio to CMake projects. 项目地址: https://gitcode.com/gh_mirrors/cm/cmakeconverter …...

来画AI漫剧软件2025推荐,创新故事创作工具引领未来

来画AI漫剧软件2025推荐,创新故事创作工具引领未来一、引言随着科技的快速发展,越来越多的创新工具正在改变我们的创作方式。来画AI漫剧软件作为一款集成了人工智能技术的故事创作工具,正逐渐成为创作者们的新宠。本文将从多个维度详细解析来…...

零硬件也能玩!OpenClaw仿生机器人入门全指南:从环境搭建到第一个机械臂抓取项目

很多刚接触仿生机器人的同学,第一次听说OpenClaw,都会被它“仿生龙虾机器人”的名头劝退,觉得这是个只有硬件图纸、没有实操教程的学术项目。我去年第一次接触OpenClaw的时候,光是环境搭建就踩了一周的坑:ROS版本不对、…...

不会做Twitter运营?用赛博云推,一套自动化流程帮你实现涨粉+获客+霸屏

在如今的社交媒体环境中,Twitter(X) 已经成为流量竞争最激烈的平台之一。无论是跨境电商、独立站推广,还是个人IP打造,越来越多的人开始布局Twitter。但很多人在实际操作中都会遇到一个核心问题:做了很久&a…...

HunyuanVideo-Foley部署教程:RTX4090D专属优化版开箱即用完整指南

HunyuanVideo-Foley部署教程:RTX4090D专属优化版开箱即用完整指南 1. 环境准备与快速部署 HunyuanVideo-Foley是一款强大的视频生成与音效生成工具,本教程将指导您在RTX 4090D显卡上快速部署优化版镜像。这个专为24GB显存优化的版本,让您无…...

2026制造企业产品交付周期缩短专项:6款项目管理系统选型分析

核心目标:聚焦制造企业计划协同、跨部门联动、风险前置、行业适配、落地提效五大交付周期核心痛点,梳理6款主流项目管理系统的功能特性、适配场景与核心优劣势,为制造企业结合自身需求精准选型提供客观参考依据。 一、制造企业选型核心维度&…...

7脚 LED数码屏的刷新显示,乱码请指正

我是新手近段时间的工作是点亮7脚LED数码屏,刷新时遇到了困惑请大家帮助指正,在此表示非常感谢。 下面是7脚LED数码屏结构图。 用了7个 case下面是刷新代码switch(ScanPinNum){// ---------------- CASE1: PIN1------------------------case 1: …...

局域网基本原理

1.局域网技术 a.以太网Ethernet b.令牌环 token ring 由IBM公司开发,IEEE802.5就是在此基础上i.工作模式:需要发送数据的时候,需要等待空闲令牌收到后,才能发送,令牌是一种特殊的MAC控制帧 c.FDDI 光纤分布式数据接口i…...

[资源] 【百度网盘 】最终幻想战略版 伊瓦利斯编年史 豪华中文 Build.20688883+全DLC-支持手柄

受太阳与圣印保佑,由双头狮统治的国家――――Ivalice。Ivalice与邻国Ordallia展开“The Fifty Years’ War”却战败。一年后先王病逝,而将要继承王位的王子年仅两岁。此后为争夺监护人的头衔与实权,在“The Fifty Years’ War”立下战功的两…...

出厂自带“缰绳”的AI来了,Hermes Agent正在重新定义智能体

在过去的一年里,AI Agent领域经历了一场又一场热潮,OpenClaw带来的“龙虾热”还没有完全散去,一款名为Hermes Agent的开源智能体框架又迅速闯入开发者视野。发布短短两个月,GitHub星标就突破27000,没有铺天盖地的营销&…...

HTML 5段落

HTML5 段落 (Paragraphs) 学习笔记 在 HTML5 中&#xff0c;段落是文本内容的基本构建块。虽然核心标签 <p> 从 HTML4 继承而来&#xff0c;但 HTML5 在语义化结构、文本流控制以及与语义标签的配合方面有了更明确的规范。一、核心标签&#xff1a;<p> 1. 基本用法…...

别再数据线了!用FastAPI 分钟搭个局域网文件+剪贴板神器志

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode&#xff0c;现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力&#xff0c;让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中&#xff0c;我们遇到了一个很现实的问…...

HTML5 标题

HTML5 标题 (Headings) 学习笔记 HTML5 中的标题元素用于定义文档的层级结构。它们对于文档结构、**SEO&#xff08;搜索引擎优化&#xff09;以及无障碍访问&#xff08;Accessibility&#xff09;**至关重要。 一、标题元素概览 HTML 提供了 6 个级别的标题&#xff0c;从最…...

OpenTiny NEXT 从入门到精通·第 6 篇

OpenTiny NEXT 从入门到精通第 6 篇&#xff1a;架构篇——跨框架集成与微前端实战在企业级前端开发中&#xff0c;多技术栈共存、存量系统迁移、微前端集成是绕不开的三大难题。你可能正在维护一个 Vue 2 的老项目&#xff0c;新业务要用 Vue 3 开发&#xff0c;团队中还有 Re…...

RPA入门,看这篇就够了

一、基础定义&#xff1a;RPA究竟是什么&#xff1f; 机器人流程自动化&#xff08;Robotic Process Automation&#xff0c;简称RPA&#xff09;是一种通过软件程序模拟人类在计算机上的操作行为&#xff0c;依据预设规则自动执行重复性、规则性任务的应用软件技术。简单来说&…...

OpenClaw自动化招聘工具:千问3.5-35B-A3B-FP8筛选简历截图并生成面试问题

OpenClaw自动化招聘工具&#xff1a;千问3.5-35B-A3B-FP8筛选简历截图并生成面试问题 1. 为什么需要自动化招聘工具 去年帮朋友公司处理校招季简历时&#xff0c;我深刻体会到人工筛选的痛点&#xff1a;连续三天熬夜翻阅800多份PDF简历&#xff0c;眼睛酸胀不说&#xff0c;…...

call、apply和bind的原理及使用场景

在JavaScript 中&#xff0c;call、apply 和 bind 是 Function 对象自带的三个方法&#xff0c;这三个方法的主要作用是改变函数中的 this 指向&#xff0c;从而可以达到接花移木的效果 原理&#xff1a; 1、call(thisArgs [,args...]) 该方法可以传递一个thisArgs参数和一个…...