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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 猿创征文|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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
16天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
126 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
5天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
1月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
30天前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
94 5
|
2月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
37 7
|
2月前
|
机器学习/深度学习 人工智能 关系型数据库
Python开发
Python开发
44 7
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
49 2
|
2月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
61 1