三、Python web开发入门
一、web开发介绍
1、web开发概述
c/s结构和b/s结构,客户机/服务器结构和浏览器/服务器结构即web开发。
b/s结构的优势:
不用通知客户端安装某个软件
不需要通知客户端升级
可以轻松的实现跨平台。
访问网站的过程:用户向web服务器发送请求,然后返回一个HTML文件。
静态网站:直接返回HTML文件给用户。
动态网站:用户请求->执行Python程序(与数据库进行交互)->执行结果->返回HTML给用户。
采用mvc设计web应用:
m: model模型,存储web应用数据的代码
v: view视图,格式化和显示web应用的用户界面的代码
c: controller控制器,将web应用粘合在一起并提供业务逻辑的代码。
CGI:
common gateway interface
可以让一个客户端,从网页浏览器向服务器请求数据。这是描述客户端和服务器程序之间传输数据的一个标准。
应用于web的编程语言:
PHP
ASP/ASP.net
JSP
Python。
2、web应用的结构
web应用结构概览:
前端程序:HTML、CSS、js(混合使用)
后台程序:Python、PHP、JSP(只有一种就可以)
数据库:MySQL(关系型数据库)、mongodb(非关系型数据库)。
前端:
HTML 超文本标记语言,不是被执行,而是被渲染
CSS 层叠样式表,规定样式
js 和JAVA并没有联系。
数据库及静态存储:
MySQL
sqlite
mongodb。
3、HTML和JavaScript的简单介绍
目标:
使用HTML语言和js语言,编写程序,使其可以完成两个整数的加法。并将结果输出在HTML页面中。
html页面 js文件二、用Python进行CGI编程
1、CGI介绍
CGI是运行在服务器上的程序,提供同客户端HTML页面的接口。它的全称是 common gateway interface(通用网关接口)
CGI程序可以是Python脚本,Perl脚本,c或者c++程序等。换句话说,CGI程序是不限定适用语言的。
历史:
1993年由ncsa开发(跟我一样大,哈哈)
1997年制定了CGI1.1规范。
CGI工作原理:
浏览器访问URL并连接到web服务器
web服务器接收到请求信息后会解析URL,并查找访问的文件在服务器上是否存在,如果存在就返回文件的内容,否则返回错误信息
浏览器从服务器上接收信息,并显示接收的文件或者错误信息。
缺点及改进:
每次的CGI请求都要求生成一个程序的副本来进行
fastcgi-先编译
mod_perl-将解释器作为模块集成在web服务器中
使用c等编译语言。
CGI中的环境变量:
CGI程序都接收一些环境变量,这些环境变量非常有用,例如:
content_type:指示传递来信息的类型
http_cookie:客户机的cookie内容
remote_addr:发送请求的客户机的IP地址
request_method:脚本被调用的方法,如get和post方法。
get方法和post方法:
浏览器客户端通过两种方法向服务器传递信息,这两种方法就是get方法和post方法
get方法发送用户信息到服务端,数据信息包含在请求URL上,以?分割。例如:
http://www.dong.com/cgi-bin/hello.py?key1=Value&key2=Value2。
get请求可被浏览器缓存
get请求会保存在历史记录中
get请求有长度限制
get请求不应用于敏感场合
get请求只应当用于取回数据
使用post方法向服务器传递数据是更安全可靠的,像一些敏感数据如用户密码等需要使用post传输
post请求会包含在http请求的头中
post请求不会显示在URL中。
2、Python中的web服务器
Python自带的web服务器:
Python自带的包可以建立简单的web服务器
basehttpserver:提供基本的web服务器和处理类
simplehttpserver:包含执行get请求的simpleHttprequestHandler类
CGIHttpServer:包含处理post请求和执行的CGIhttprequesthandler类。
示例:
使用Apache:
Apache是Apache软件基金会的一个开源网页服务器软件。同样由ncsa开发。
Apache可以通过简单的API扩充将Python解释器编译到服务器中。
市场占有率达到53.67%(2009 netcraft)
第一个CGI程序:
创建目录
编写CGI程序
开启服务器
使用浏览器访问
3、实战:用CGI编写加法器
目标:
使用Python语言,使用get请求和post请求,配合HTML和js程序,完成之前的加法器。并开启服务器,使得其他人可以进行访问。
创建模板文件 主文件 运行效果三、Python web框架开发
1、web开发框架介绍
何谓框架?
软件框架,指的是为了实现某个业界标准或者完成特别基本任务的软件组件规范,也指为了实现某个软件组建规范时,提供规范所要求之基础功能的软件产品。
框架的功能类似于基础设施,提供并实现最为基础的软件架构和体系。我们通常依据特定的框架实现更为复杂的业务逻辑。
框架,就是程序的骨架。
使用框架的好处
可重用
成熟,稳健
可扩展性良好
提高开发速度
什么是web框架
web应用框架是支持动态网站、网络应用程序的软件框架。
web框架的工作方式:接收http请求并处理,分派代码,产生HTML,创建http响应。
web框架通常包含了:URL路由,数据库管理,模板引擎等。
使用web框架的优缺点
着重业务逻辑
高度可重用
选对框架很重要
web框架中的概念
mvc
orm 对象关系映射 将一个类映射成数据库中的一张表
URL route 将访问的地址映射到相应的函数中
template 模板 将数据可以传递到HTML代码中进行渲染
2、Python中的web框架
sudo pip install flask
3、实战:使用flask编写加法器
目标
使用Python语言和flask框架,配合HTML和js程序,完成之前的加法器。并开启服务器,使得其他人可以进行访问。
四、flask表单开发
1、表单介绍
何谓表单?
表单是HTML页面中负责数据采集功能的部件。它往往由三部分组成,即表单标签、表单域、表单按钮。我们可以通过表单,将用户输入的数据提交给服务端,并交由服务端进行处理。
表单标签
用于声明表单的范围,位于表单标签中的元素将被提交
语法:<form></form>
属性:method, enctype, action...
表单域
表单域包含了文本框,密码框等多种类型
语法:<input ....../>
属性:tyep, name, value...
表单域的种类
文本框 <... type = text>
密码框 <... type = password>
文本区域 <... type = textarea>
文件上传框 <... type = file>
单选框 <... type = radio>
复选框 <... type = checkbox>
......
表单按钮
提交按钮
复位按钮
一般按钮
实例:一个含有多种元素的表单
使用HTML语言,尝试编写一个含有多种元素的表单。并进行简单的排版。同时,尝试通过JavaScript取得页面元素的值。
2、表单的提交方式
get和post
get方式通过URL提交数据,数据在URL中可以看到
post方式,数据放置在HTML header中提交
例如:get方式:www.baidu.com/?wd=value
post方式:在http头中提交 wd=value
两种提交方式的区别
get请求可以被浏览器缓存
post所请求的URL可以被缓存,但数据不会被缓存
post请求不便于分享
post请求没有限制
get请求的数据暴露在URL中,会带来一些安全问题
get方式的使用场合
单纯的请求数据,不进行其他操作
表单数据较短,不超过1024个字符
对安全性要求一般的场合
post方式适用的场合
数据不仅仅用于请求,例如,需要将数据插入数据库内
表单数据过长时
要传送的数据不是ASCII编码
3、实战:用flask开发用户管理(一)
目标
使用flask框架,配合HTML和JavaScript程序,编写一个页面。该页面判断用户提交的用户名和密码是否分别为dong和123456,如果是则跳转到百度的首页,否则返回错误信息。
使用wetforms包来做输入的判断 模板里更换表单域sudo pip install Flask-wtf安装wtf包。但是由于我安装了多个版本的Python,pycharm一直运行不了,这时可以通过指定Python版本来解决。
pycharm指定Python运行版本五、Python的数据库连接
1、数据库基础
何谓数据库?
数据库,可以理解为电子化的文件柜。用户可以对文件柜中的数据进行增、删、改、查的操作。
数据库管理系统,是为管理数据库而设计的电脑软件系统。一般会具有存储、截取、安全保障、备份等基础功能。
数据库的分类
关系型数据库 数据以关系型存放,像一个表格
MySQL、sqlite、postgresql、Oracle、Microsoft Access ...
非关系型数据库
bigtable、mongodb、leveldb ...
为什么要使用数据库管理系统(dbms)
减少记录编档的时间
减少记录检索的时间
灵活的查找序列
灵活的输出格式
多个用户同时访问记录
演示:在Mac上安装MySQL数据库和相关的管理工具
需要安装的软件:
MySQL
workbench - 图形化管理界面
我没有能用成功就在pycharm专业版上用的sqlite数据库。
2、数据库查询语言sql
何谓sql?
结构化查询语言,是一种用语数据库中的标准数据查询语言。由IBM最早用在其开发的数据库系统中。1986年10月,成为关系型数据库管理系统的标准语言。不同数据库系统之间的sql不能完全互相通用。
sql可以完成数据定义、数据操作、数据控制的作用。
sql语言实例
查询
select Column1 ... from tbl where Column = value order by id desc
插入
insert into tbl (Column1, Column2 ...) values (value1, value2)
删除
delete from tbl where Column = value
修改
update tbl set Column = value where Column = value