Python基础——PyCharm版本——第十章、Web开发(1)

简介: Python基础——PyCharm版本——第十章、Web开发

前言

最早的软件都是运行在大型机上的,软件使用者通过“哑终端”登陆到大型机上去运行软件。后来随着PC机的兴起,软件开始主要运行在桌面上,而数据库这样的软件运行在服务器端,这种Client/Server模式简称CS架构。


随着互联网的兴起,人们发现,CS架构不适合Web,最大的原因是Web应用程序的修改和升级非常迅速,而CS架构需要每个客户端逐个升级桌面App,因此,Browser/Server模式开始流行,简称BS架构。


在BS架构下,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web页面,并把Web页面展示给用户即可。


当然,Web页面也具有极强的交互性。由于Web页面是用HTML编写的,而HTML具备超强的表现力,并且,服务器端升级后,客户端无需任何部署就可以使用到新的版本,因此,BS架构迅速流行起来。


今天,除了重量级的软件如Office,Photoshop等,大部分软件都以Web形式提供。比如,新浪提供的新闻、博客、微博等服务,均是Web应用。


Web应用开发可以说是目前软件开发中最重要的部分。Web开发也经历了好几个阶段:


静态Web页面:由文本编辑器直接编辑并生成静态的HTML页面,如果要修改Web页面的内容,就需要再次编辑HTML源文件,早期的互联网Web页面就是静态的;


CGI:由于静态Web页面无法与用户交互,比如用户填写了一个注册表单,静态Web页面就无法处理。要处理用户发送的动态数据,出现了Common Gateway Interface,简称CGI,用C/C++编写。


ASP/JSP/PHP:由于Web应用特点是修改频繁,用C/C++这样的低级语言非常不适合Web开发,而脚本语言由于开发效率高,与HTML结合紧密,因此,迅速取代了CGI模式。ASP是微软推出的用VBScript脚本编程的Web开发技术,而JSP用Java来编写脚本,PHP本身则是开源的脚本语言。


MVC:为了解决直接用脚本语言嵌入HTML导致的可维护性差的问题,Web应用也引入了Model-View-Controller的模式,来简化Web开发。ASP发展为ASP.Net,JSP和PHP也有一大堆MVC框架。


目前,Web开发技术仍在快速发展中,异步开发、新的MVVM前端技术层出不穷。


Python的诞生历史比Web还要早,由于Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发。


Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。


本章我们会详细讨论Python Web开发技术。


Python网络框架

Django


Django于2003年诞生于美国堪萨斯(Kansas)州,最初用来制作在线新闻Web站点,目前已发展为应用最广泛的Python网络框架。


Django是遵循MVC架构的Web开发框架,其主要由以下几部分组成:


管理工具(Management)

模型(Model)

视图(View)

表单(Form)

管理站(Admin)

Tornado


Tornado是使用Python编写的一个强大的可扩展的Web服务器。


相对于其他Python网络框架,Tornado有如下特点:


完备的Web框架

高效的网络库

提供高效HTTPClient

提供高效的内部HTTP服务器

完备的WebSocket支持

Flask


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


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


Flask的特点可以归结如下:


内置开发服务器和调试器

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

使用Jinja2模板

完全兼容WSGI 1.0标准

基于Unicode编码

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

image.png


image.png

示例:

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找到对应的处理函数。

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

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

DBHelper.py:

import pymysql
class DBHelper():
    """DBHelper"""
    def NoQuery(self,sql):
        """DML语句"""
        conn = pymysql.connect(host='127.0.0.1',
                               port=3306,
                               user='root',
                               passwd='root',
                               db='test',
                               charset='utf8')
        cursor = conn.cursor()
        cursor.execute(sql)
        rows = cursor.execute(sql)
        cursor.close()
        return rows
    def Query(self, sql):
        """查DQL询语句"""
        conn = pymysql.connect(host='127.0.0.1',
                               port=3306,
                               user='root',
                               passwd='root',
                               db='test',
                               charset='utf8')
        cursor = conn.cursor()
        cursor.execute(sql)
        info = cursor.fetchall()
        cursor.close()
        return info

demo.py

from flask import Flask
from DBHelper import DBHelper  # 使用第六章的DBHelper
app = Flask(__name__)  # 创建程序实例
# 注册路由
@app.route('/')
def index():
    db = DBHelper()
    result = db.Query("select * from userinfo")
    backStr = ""
    for info in result:
        backStr += ('编号:' + str(info[0]) + ' 创建时间:' + str(info[1]))
        backStr += ('账号:' + str(info[2]) + ' 简介:' + str(info[3]))
        backStr += "<br>"
    return backStr
app.run()

image.png


静态路由

1. @app.route(url路径) 
2. 
3. def 视图函数():
4. 
5.     代码段
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>"
app.run()

image.png

相关文章
|
1月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
1月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
34 4
|
1月前
|
存储 监控 安全
如何在Python Web开发中确保应用的安全性?
如何在Python Web开发中确保应用的安全性?
|
14天前
|
Ubuntu Shell Linux
pyenv 管理多个 Python 版本(1)
pyenv 管理多个 Python 版本(1)
137 86
pyenv 管理多个 Python 版本(1)
|
9天前
|
Shell Python
使用 pyenv 来管理多个 Python 版本(2)
使用 pyenv 来管理多个 Python 版本(2)
100 71
使用 pyenv 来管理多个 Python 版本(2)
|
21天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
27天前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
30 7
|
1月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
1月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
38 2
|
1月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
39 1