Day 52:【99天精通Python】Web 开发入门 (Flask) - 5行代码写个网站

Day 52:【99天精通Python】Web 开发入门 (Flask) - 5行代码写个网站

前言

欢迎来到第52天!

在之前的 51 天里,我们写的代码都是在终端里跑的,或者生成一个本地的文件。如果你想让全世界的人都能用到你的程序,最好的办法是什么?
——做一个网站

Python 是 Web 开发领域的巨头之一,拥有 Django 和 Flask 两大框架。

  • Django:全家桶,功能大而全,适合大型企业级项目。
  • Flask:微框架 (Microframework),轻量、灵活,适合中小型项目、API 接口和快速原型开发。

对于初学者,Flask 绝对是入门首选。今天,我们就用几行代码,搭建你的第一个 Web 服务器。

本节内容:

  • 安装 Flask
  • Hello World:最小的 Flask 应用
  • 路由 (Route) 与视图函数
  • 动态路由 (<name>)
  • 渲染 HTML 模板 (render_template)
  • 实战练习:个人名片网页

一、环境准备

pipinstallflask

二、Hello Flask:最小的应用

新建app.py,输入以下代码:

fromflaskimportFlask# 1. 创建应用实例# __name__ 是当前模块的名字,Flask 用它来寻找资源app=Flask(__name__)# 2. 定义路由 (Route)# 告诉 Flask,当用户访问 "/" (根路径) 时,执行下面这个函数@app.route("/")defhello_world():return"<h1>Hello, Flask!</h1>"# 3. 启动服务器if__name__=="__main__":# debug=True: 代码修改后自动重启,且报错时网页显示调试信息app.run(debug=True)

运行:在终端执行python app.py
你会看到输出:Running on http://127.0.0.1:5000
打开浏览器访问这个地址,你就会看到大大的 “Hello, Flask!”。


三、路由与视图函数

路由(URL)就是用户在浏览器地址栏输入的东西。

3.1 多个路由

@app.route("/about")defabout():return"这是关于页面"@app.route("/contact")defcontact():return"请联系我们:mail@example.com"

3.2 动态路由 (Path Variable)

比如我们要显示不同用户的主页,不可能给每个人都写一个@app.route("/user/Tom")
我们可以使用<variable_name>来捕获 URL 中的参数。

# <name> 会作为参数传给 user_profile 函数@app.route("/user/<name>")defuser_profile(name):returnf"欢迎来到{name}的主页!"# 指定类型 (如 int)@app.route("/post/<int:post_id>")defshow_post(post_id):returnf"正在阅读第{post_id}篇文章"

四、渲染模板:让网页漂亮起来

在视图函数里直接返回 HTML 字符串(如return "<h1>...</h1>")太痛苦了。
Flask 使用Jinja2模板引擎,允许我们将 HTML 代码写在单独的文件里,然后用数据去渲染它。

4.1 目录结构

Flask 对目录结构有要求,HTML 文件必须放在templates文件夹下。

my_flask_app/ ├── app.py └── templates/ └── index.html

4.2 编写模板 (templates/index.html)

Jinja2 允许在 HTML 中使用{{ 变量名 }}来占位。

<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>我的网站</title></head><body><h1>你好,{{ user }}!</h1><p>今天是:{{ date }}</p><h3>我的技能列表:</h3><ul><!-- 循环 -->{% for skill in skills %}<li>{{ skill }}</li>{% endfor %}</ul><!-- 条件判断 -->{% if is_admin %}<pstyle="color:red">管理员已登录</p>{% endif %}</body></html>

4.3 渲染模板 (app.py)

fromflaskimportFlask,render_templatefromdatetimeimportdatetime app=Flask(__name__)@app.route("/")defindex():# 准备数据username="Python小白"today=datetime.now().strftime("%Y-%m-%d")my_skills=["Python","Pandas","Flask","爬虫"]# render_template 自动去 templates 文件夹找 index.html# 并将后面的参数传进去returnrender_template("index.html",user=username,date=today,skills=my_skills,is_admin=True)if__name__=="__main__":app.run(debug=True)

五、实战练习:个人名片网页

我们要开发一个简单的个人主页,展示头像、简介和联系方式。

1. 准备静态文件
CSS、JS、图片等文件必须放在static文件夹下。

project/ ├── app.py ├── static/ │ ├── style.css │ └── avatar.jpg └── templates/ └── card.html

2. 编写 CSS (static/style.css)

body{font-family:Arial;text-align:center;background-color:#f4f4f4;}.card{background:white;width:300px;margin:50px auto;padding:20px;border-radius:10px;box-shadow:0 4px 8pxrgba(0,0,0,0.1);}img{width:100px;border-radius:50%;}h2{color:#333;}p{color:#666;}

3. 编写 HTML (templates/card.html)

<!DOCTYPEhtml><html><head><!-- 引入静态文件的标准写法: url_for('static', filename='...') --><linkrel="stylesheet"href="{{ url_for('static', filename='style.css') }}"></head><body><divclass="card"><imgsrc="{{ url_for('static', filename='avatar.jpg') }}"alt="Avatar"><h2>{{ name }}</h2><p>{{ job }}</p><p>{{ bio }}</p><hr><p>Email: {{ email }}</p></div></body></html>

4. 编写 Flask (app.py)

fromflaskimportFlask,render_template app=Flask(__name__)@app.route("/")defcard():info={"name":"张三","job":"Python 工程师","bio":"热爱编程,专注于 Web 开发与数据分析。","email":"zhangsan@example.com"}# **info 把字典解包传参 (name="张三", job=...)returnrender_template("card.html",**info)if__name__=="__main__":app.run(debug=True)

六、常见问题

Q1:为什么修改了 HTML,网页没变化?

可能是浏览器缓存。

  • Ctrl + F5强制刷新。
  • 或者在 DevTools (F12) 的 Network 标签页勾选Disable cache

Q2:只能在本机访问,手机怎么看?

默认127.0.0.1只有本机能访问。
修改启动参数:app.run(host='0.0.0.0', debug=True)
然后手机连接同一个 WiFi,访问电脑的局域网 IP(如192.168.1.x:5000)。

Q3:Jinja2 模板里的{% %}{{ }}有什么区别?

  • {{ var }}变量,用于输出值。
  • {% if/for %}控制结构,用于逻辑判断和循环。

七、小结

Flask Web开发

创建应用

路由 Route

模板 Template

Flask(name)

app.run(debug=True)

@app.route('/')

动态参数

render_template

Jinja2 语法 {{ }}

static 静态文件

关键要点

  1. Flask极简,5 行代码就能跑起来。
  2. 路由决定了 URL 怎么映射到 Python 函数。
  3. 模板实现了逻辑(Python)和界面(HTML)的分离。
  4. 静态资源(图片/CSS)放static,HTML 放templates

八、课后作业

  1. 加法计算器:编写两个路由。/显示一个表单(两个输入框和一个提交按钮),提交到/result路由,在/result页面显示两数之和。(提示:需要用到 HTML<form>和下一节课的request对象,可以先尝试 GET 请求?a=1&b=2的方式)。
  2. 随机抽奖页:访问/lottery时,随机从 [“一等奖”, “二等奖”, “谢谢惠顾”] 中抽取一个,并用不同的颜色显示在网页上。
  3. 多页面导航:创建一个包含"首页"、“博客”、"关于"三个页面的网站,并在页面顶部添加导航栏链接,实现互相跳转。

下节预告

Day 53:Flask 进阶 - 表单处理与 Request- 网页不光是用来看的,还能用来提交数据(如登录、注册)。明天我们学习如何处理用户的 POST 请求。


系列导航

  • 上一篇:Day 51 - 数据可视化Seaborn进阶
  • 下一篇:Day 53 - Flask进阶表单处理(待更新)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

前端项目打包部署完整流程

1. 环境准备确认项目为 Vue.js 前端项目已安装 Node.js (> 14.0.0) 和 npm (> 6.0.0)项目依赖已安装 (node_modules)2. 选择打包环境根据部署环境选择对应的打包命令:测试环境: npm run build:test生产环境: npm run build:prod3. 执行打包# 进入项目目录 cd web-master-…

【电压风险评估】基于720个样本与360个样本的Copula及蒙特卡罗推断结果比较研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

【2025最新】基于SpringBoot+Vue的创新创业教育中心项目申报管理系统管理系统源码+MyBatis+MySQL

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着高校创新创业教育的快速发展&#xff0c;传统项目申报管理模式已无法满足高效、透明和智能化的需求。当前&#xff0c;许多教育中心仍依赖纸质…

Java SpringBoot+Vue3+MyBatis 安康旅游网站系统源码|前后端分离+MySQL数据库

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着信息技术的快速发展&#xff0c;旅游业逐渐向数字化、智能化转型。安康作为陕西省重要的旅游城市&#xff0c;拥有丰富的自然和文化资源&#…

【web安全】小白想入门web安全,应该从哪里开始下手!

一、Web 安全概述 &#xff08;一&#xff09;Web 安全的定义与重要性 1.定义 Web 安全是指保护 Web 应用程序免受各种网络威胁&#xff0c;确保 Web 服务的保密性、完整性和可用性。在当今数字化时代&#xff0c;Web 应用广泛存在于各个领域&#xff0c;从电子商务到社交媒…

【顶级EI复现】基于断线解环思想的配电网辐射状拓扑约束建模方法附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

机器学习科学家分享:如何开启AI职业生涯并解密前沿技术

机器学习科学家分享&#xff1a;如何开启AI职业生涯并解密前沿技术 Parmida Beigi 的职业生涯涵盖了机器学习和数据科学的多个方面。从她在计算机视觉和时间序列预测的博士研究&#xff0c;到在 Alexa AI 端到端系统的工作。如今&#xff0c;Beigi 致力于语音识别和自然语言处理…

全网最全继续教育AI论文写作软件TOP10:深度测评与推荐

全网最全继续教育AI论文写作软件TOP10&#xff1a;深度测评与推荐 2026年继续教育AI论文写作工具测评&#xff1a;为何值得关注 随着人工智能技术的不断进步&#xff0c;AI写作工具在学术领域的应用日益广泛。对于继续教育群体而言&#xff0c;如何高效完成论文写作、提升内容质…

Java Web web酒店客房管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着信息技术的快速发展&#xff0c;酒店行业对高效、智能的管理系统需求日益增长。传统酒店客房管理依赖人工操作&#xff0c;存在效率低下、易出…

基于单片机的车辆超载系统

第三章 主要元器件的选择 3.1 单片机的选择 3.1.1单片机的概括 单片机&#xff0c;也叫单片微控器&#xff0c;是一种集成式的电流芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行…

谁还以为网安只会挖洞就行?2025 卷王标准:云原生 + AI 攻防,速来聊聊你的技能升级计划!

最近在后台回复粉丝的问题&#xff0c;已经遇到不少211/985高校信息安全专业、做安全攻防/渗透方向&#xff0c;却没找到暑期实习的粉丝了。 背景都很不错&#xff0c;有的CTF竞赛拿过奖&#xff0c;有的跟着导师做过项目&#xff0c;他们的提问甚至让我有点吃惊。 坦白来说&…

基于plc的八路抢答器设计

第二章 PLC相关技术概况 2.1 PLC的产生 可编程逻辑控制器PLC是一个新型的工业控制设备&#xff0c;通过科技的发展和生产力的提升&#xff0c;它已形成了现代和多部门的中小型制造企业。 对工业各种装置和生产工艺的控制系统一般由操纵机构、驱动机构、发动机和控制器完成。生产…

AI生成内容去重指南:10款专业工具深度测评与优化方案

核心工具对比速览 工具名称 核心功能 适用场景 处理速度 特色优势 aibiye 降AIGC率查重 学术论文优化 20分钟 适配知网/格子达/维普规则 aicheck AIGC检测 风险区域识别 实时 可视化热力图报告 askpaper 学术内容优化 论文降重 20分钟 保留专业术语 秒篇 …

电气自动化 PLC水塔水位控制

1 PLC相关介绍 1.1 可编程控制器 可编程控制器,主要应用于工业环境。微处理器是其主要部件&#xff0c;简称PLC。PLC拥有用来运行逻辑运算的存储器。这个存储器可以进行程序解读&#xff0c;在工业生产环境有着很重要的作用。继电器-接触系统是由开关、接触器等元件构成的一种…

程序员集合!2025 这 6 个接单宝藏平台你用过哪个?新手 / 大神都来聊聊接单经验!

收藏&#xff01;2025年程序员都在用的6个宝藏接单平台 大学生练手&#xff1f;职业码农赚米&#xff1f;失业人过渡&#xff1f;技术牛副业&#xff1f;请选择你的英雄&#xff01; 不管是哪种状态&#xff0c;如果你有接单需求&#xff0c;那就是来对了。接单从渠道而言&am…

2025 学黑客不用瞎找资源!全新整理网站大全,漏洞库 + 实战平台一站式搞定!

今天给大家分享一些学习网络安全的好去处。对于网络安全的学习&#xff0c;多逛论坛、阅读他人的技术分析帖是非常重要的。但有时候&#xff0c;初学者可能会感到迷茫&#xff0c;不知道去哪里寻找这些技术分析帖&#xff0c;也不知道有哪些相关的论坛或网站。所以&#xff0c;…

突破AI重复生成困境:详细评测十大工具并提供实用解决技巧

核心工具对比速览 工具名称 核心功能 适用场景 处理速度 特色优势 aibiye 降AIGC率查重 学术论文优化 20分钟 适配知网/格子达/维普规则 aicheck AIGC检测 风险区域识别 实时 可视化热力图报告 askpaper 学术内容优化 论文降重 20分钟 保留专业术语 秒篇 …

电气自动化 PLC交通控制系统

一、系统硬件分析 基于PLC控制的智能交通控制系统所用到的主要硬件有PLC和触摸屏。本设计用到的PLC是西门子S7-200系列的PLC,其CPU型号为224,触摸屏是广州致远公司的MiniHMI-1000系列触摸屏,下面我将对它们作详细介绍,并且对I/O地址的分配和PLC的接线作初步说明。 &#xff08;…

Linux 文件描述符(File Descriptor, FD)详解

文件描述符&#xff08;File Descriptor, FD&#xff09; 文件描述符是操作系统为进程管理打开文件/资源分配的整数句柄。它是Unix/Linux系统中所有I/O操作的核心抽象。 核心概念 1. 本质是什么&#xff1f; 一个非负整数&#xff08;0, 1, 2, 3, …&#xff09;指向内核维护的…