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

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

Python基础——Visual Studio版本——Web开发

目录

Python基础——Visual Studio版本——Web开发

环境要求

Flask概述

基础demo示例:

Python_DBHelper:

数据库查询遍历

Python静态路由

静态路由跳转

Python动态路由

模板的使用·utf-8

示例提升


环境要求

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

安装位置

操作步骤 

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

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()

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

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

 

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

  1. 用户在浏览器输入URL访问某个资源。
  2. Flask接收用户请求并分析请求的URL。
  3. 为这个URL找到对应的处理函数。
  4. 执行函数并生成响应,返回给浏览器。
  5. 浏览器接收并解析响应,将信息显示在页面中。

添加数据库示例:

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()

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提示访问即可。

示例效果:

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()

模板的使用·utf-8

templates/index.html

<!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)

执行访问测试:

 

示例提升

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>
            <th>简介</th>
        </tr>
        {% for row in showList %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
            <td>{{ row[2] }}</td>
            <td>{{ row[3] }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

修改模板的编码格式:


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()

显示效果:

添加测试:点击添加按钮

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

相关文章:

  • 【C语言刷LeetCode】395. 至少有 K 个重复字符的最长子串(M)
  • 利用 HomeAssistant 实现电脑远程开关机
  • 练习31-35:多表关联查询、多条件自连接查询、子查询、窗口函数等
  • windows下安装protocol buffer
  • Kubernetes 调度器学习
  • Android ADB常用命令
  • 基于51单片交通灯控制器_紧急+行人+总开关
  • Java 随笔 代理模式 1-spring aop
  • Kotlin(十一)Kotlin中的Object关键字
  • java服务器端开发-servlet:2_0、Servlet执行过程介绍:get请求与post请求、编码相关等
  • 自己整理的“无培训广告”的技术公众号!
  • springboot logback-spring.xml 整合apollo实现动态配置日志级别
  • 完全背包问题
  • 【python中级】func_timeout程序超时处理
  • JUC 并发编程_锁
  • 【知识碎片】第三方登录弹窗效果
  • 2017届校招提前批面试回顾
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Druid 在有赞的实践
  • ES6 ...操作符
  • fetch 从初识到应用
  • Iterator 和 for...of 循环
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • k个最大的数及变种小结
  • Redis 懒删除(lazy free)简史
  • vuex 笔记整理
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分布式任务队列Celery
  • 使用agvtool更改app version/build
  • 微服务入门【系列视频课程】
  • ​queue --- 一个同步的队列类​
  • ​如何在iOS手机上查看应用日志
  • ###STL(标准模板库)
  • #NOIP 2014# day.2 T2 寻找道路
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十六)Flask之蓝图
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转) Face-Resources
  • (转)甲方乙方——赵民谈找工作
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .Net Core和.Net Standard直观理解
  • .Net mvc总结
  • .Net 代码性能 - (1)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET面试题(二)
  • .Net中间语言BeforeFieldInit
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @ModelAttribute使用详解
  • @Resource和@Autowired的区别
  • [bzoj 3124][sdoi 2013 省选] 直径