猿创征文|Python基础——Visual Studio版本——Web开发

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: 猿创征文|Python基础——Visual Studio版本——Web开发

环境要求

咱们这里主要使用的是【Flask】框架,下图是下载方法,也可以使用【pip install Flask】下载


安装位置


image.png


操作步骤

image.png



安装过程在下方的输出中显示。

image.png



Flask概述

Flask是目前最流行的开源的Python Web框架之一,其受欢迎程度不输于Django。


Flask是一个轻量级的可定制框架,拥有强大的插件库,较其他同类型框架更为灵活、轻便、安全且容易上手。


Flask的特点可以归结如下:


内置开发服务器和调试器

与Python单元测试功能无缝衔接

使用Jinja2模板

完全兼容WSGI 1.0标准

基于Unicode编码


基础demo示例:

from flask import Flask as h5
# # 创建一个app应用
app = h5(__name__)
# 注册装饰器,装饰器的作用:将路由映射到视图
@app.route('/')
def index():
    return '<h1>Hello Python World!</h1>'
app.run()

可以看到,只要有访问就会有有消息提示。

image.png



浏览器中输入给予的链接路径回车即可。

image.png



在一个Web应用中,客户端和服务器上的Flask程序的交互可以概括为以下几步:


用户在浏览器输入URL访问某个资源。

Flask接收用户请求并分析请求的URL。

为这个URL找到对应的处理函数。

执行函数并生成响应,返回给浏览器。

浏览器接收并解析响应,将信息显示在页面中。

添加数据库示例:


Python_DBHelper:

import pymysql
class DBHelper():
    def __init__(self):
        # 数据库连接参数
        self.host = "rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com"
        self.user = "qwe8403000"
        self.pwd = "Qwe8403000"
        self.db = "laoshifu"
        self.charset = "utf-8"
    # 获取游标
    def getConnect(self):
        if not self.db:
            raise(NameError, "没有设置数据库信息")
        self.conn = pymysql.connect(host=self.host, port=3306, user=self.user, passwd=self.pwd, db=self.db, charset="utf8mb4")
        # 按照字典的方式返回
        cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
        if not cursor:
            raise(NameError, "连接数据库失败")
        else:
            return cursor
    # 查
    def query(self, sql):
        cursor = self.getConnect()
        cursor.execute(sql)
        result = cursor.fetchall()  # 获取查询的所有数据
        # 查询完毕后必须关闭连接
        self.conn.close()
        return result
   # 增删改查
    def excute(self, sql):
        cursor = self.getConnect()
        cursor.execute(sql)
        self.conn.commit()
        self.conn.close()

数据库查询遍历


from flask import Flask
from DBHelper import DBHelper  # 使用第六章的DBHelper
app = Flask(__name__)  # 创建程序实例
# 注册路由
@app.route('/')
def index():
    db = DBHelper()
    result = db.query("select * from mytestuser20220830")
    backStr = ""
    for info in result:
        backStr += ('编号:' + str(info["userid"]))
        backStr += ('账号:' + str(info["username"]))
        backStr += ('密码:' + str(info["password"]))
        backStr += "<br>"
    return backStr
app.run()


image.png



Python静态路由

@app.route(url路径) 
def 视图函数():
    代码段

静态路由跳转

from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
    return "<a href='/hello'>点击跳转</a>"
# 注册路由:参数与href属性相对应
@app.route("/hello")
def say_hello():
    return "<h1>hello flask!</h1><a href='/'>点击跳转</a>"
app.run()


根据Running提示访问即可。

image.png



示例效果:


image.png

Python动态路由

@app.route(url路径/<变量名>)
def 视图函数(变量名):
    代码段

这里无需写传递的变量名称。直接传递值即可。


from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
    return "<a href='/hello/666'>点击跳转传递666</a>"
# 注册路由:参数与href属性相对应
@app.route("/hello/<userid>")
def search(userid):
    return "<h1>编号是:%s</h1>" % userid
app.run()


image.png




模板的使用·utf-8

templates/index.html

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板使用</title>
</head>
<body>
    欢迎你,{{userinfo.username}}
</body>
</html>


python编码


from flask import Flask
from flask import render_template  # 导入render_template函数
app = Flask(__name__)
user = {"username":"zhangsan",
    "userpwd":"123"}
@app.route("/")
def index():
    # 以键/值对方式传递数据
    return render_template("index.html",userinfo=user)
if __name__ == "__main__":
    app.run(debug=True)

执行访问测试:

image.png


示例提升

templates/Template.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板H5</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
    <a href="/AddInfo" class="btn btn-primary">添加</a>
    <table class="table table-hover table-bordered" style="text-align:center">
        <tr class="info">
            <th>编号</th>
            <th>账号</th>
            <th>密码</th>
        </tr>
        {% for row in showList %}
        <tr>
            <td>{{ row["userid"] }}</td>
            <td>{{ row["username"] }}</td>
            <td>{{ row["password"] }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>


修改模板的编码格式:

image.png




templates/AddInfo.html


需要修改编码格式utf-8


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
    <form action="/SubmitAddInfo" method="post">
        <p>
            <input type="text" name="userName" placeholder="请输入用户名" class="form-control" />
        </p>
        <p>
            <input type="text" name="passWord" placeholder="请输入用户密码" class="form-control" />
        </p>
        <p>
            <input type="submit" value="添加" class="btn btn-primary" />
        </p>
    </form>
</body>
</html>

python编码示例


from DBHelper import DBHelper  # 使用第六章的DBHelper
from flask import Flask, render_template, redirect
from flask import request
import time
app = Flask(__name__)
# 注册路由
@app.route('/')
def index():
    db = DBHelper()
    result = db.query("select * from mytestuser20220830")
    print(result)
    return render_template("Template.html", showList=result)
@app.route('/AddInfo')
def AddInfo():
    return render_template("AddInfo.html")
# 注册路由
@app.route('/SubmitAddInfo', methods=["POST"])
def SubmitAddInfo():
    userName = request.form.get("userName")
    passWord = request.form.get("passWord")
    sql = str.format("insert into mytestuser20220830 values(0,'{0}','{1}')",userName, passWord)
    db = DBHelper()
    db.excute(sql)
    return redirect('/')
app.run()


显示效果:


image.png


添加测试:点击添加按钮

image.png



可以看到添加【zhaoliu】成功。


image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
8月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
11月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
1198 20
|
9月前
|
人工智能 数据安全/隐私保护 Python
小红书图文生成器,小红书AI图文生成工具,python版本软件
Pillow库自动生成符合平台尺寸要求的配图7;3)利用Playwright实现自动化发布流程6。
|
10月前
|
Ubuntu 安全 API
Python3.14正式支持Free Threaded版本!
Python 社区迎来历史性时刻!Python 3.14 正式将无 GIL 构建列为受支持选项,标志着 Free‑Threaded Phase II 启动。本文将深入解析 PEP 779 规定的支持标准、3.14.0b3 版本的新变化,以及这对Python开发者意味着什么。文末还有小彩蛋哦!
1586 87
|
7月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
868 7
|
9月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
9月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
8月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
10月前
|
IDE 开发工具 Python
魔搭notebook在web IDE下,使用jupyter notebook,python扩展包无法更新升级
魔搭notebook在web IDE下,使用jupyter notebook,python扩展包无法更新升级,不升级无法使用,安装python扩展包的时候一直停留在installing
269 4
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
370 21
怎么开发Python第三方库?手把手教你参与开源项目!

推荐镜像

更多
下一篇
开通oss服务