python web开发
[if !supportLists]1-1 [endif]预期目标
技能:学习[Django] [Tornado] [Flask]web开发框架
经验:熟悉[门户网站\在线电商\管理平台、项目开发]开发流程和处理过程
总结:掌握[学习过的所有知识点的]主线!
检测一个技能学会与否的关键
3W1H
what?
where?
why?
how?
1-2 开发基础
要学习web开发,需要掌握的基本技能
计算机基础知识[了解]
网页开发[HTML/CSS]
网页动态效果[Js/JQ]
网页快速搭建[Bootstrap]
网络相关知识[传输协议]
数据库相关
数据相关知识[数据安全(加密解密)]
服务器后端web应用程序开发
1-3]回顾:前端开发
HTML:超文本标记语言
超文本:不仅仅能表示简单的文字
HTML的目的:按照指定的格式在浏览器中展示数据
标记/标签:选择文本~成对标记/标签、单标记/标签
标签的类型:
行标签:标签前后不换行、不能设置宽度和高度[display:inline]
行内块标签:标签前后不换行,可以设置宽度和高度[display:inline-block]
块标签:标签前后自动换行,可以设置宽度和高度[display:block]
常用的标签:
span\p\br\hn\em\i\
form\input[text/password/checkbox/radio/url/email/..]
…
CSS:对于HTML标签选中的内容进行样式修饰
定位样式
字体样式
尺寸样式
背景样式
more等等
盒子模型:
传统盒子模型[使用了一堆标签 和他们的定位样式以及内容样式,操作展示网页布局]
盒子:规范网页布局的核心
分析盒子的意义——网页开发——无障碍!
网页布局:通过对整体网页的结构分析,完成盒子的嵌套进行网页布局的实现
网页开发:网页布局->颜色填充->部分网页布局->颜色填充->..->内容填充
网页快速开发:
网页开发流程:
产品:UI设计网页-> [产品经理]-> 前端开发网页-> [产品经理 交付]
工具:BS快速搭建网页-> 开发后端程序-> 部署运行
web阶段:
Django 3周[2+1]
Tornado 1周[4+1]
Flask 1周[1+4]
web概述[web基础]
Django 入门[快速了解]
Django-----
1. web概述
web:网络
网络:多台互相连接的计算机组成的可以通信的一个组成部分——网络
规模比较小:局域网
规模较大:城域网
规模很大:[相对于全球——天朝]大城域网
规模相当大:全球网络~广域网
web软件:网络软件
2. 软件的分类
软件:一种可执行的计算机指令的集合——程序!程序的宏观体现:软件
>> 理解:所谓软件,就是在电脑上安装的可执行的应用程序!
>> 社交软件:QQ、微信、陌陌、钉钉、微博、Facebook..
>> 办公软件:Mircosoft office、金山office、…
>>> 办公系统:OA系统
>> 网络软件:更多的指代动态网站
根据软件的使用是否需要联网:[为什么要用软件!]
1) 单机软件:软件的使用不需要联网,如CS1.6、红警、office、画图、扫雷
a) 不会被取代,但是使用受到很大的局限
2) [endif]网络软件
a) [endif]会越来越流行——【重点】
根据软件使用过程中是否需要下载安装包
1) C/S结构:Client-Server 客户端服务器软件
a) 在自己的客户端电脑上,下载一个安装包程序,安装软件之后,才能正常使用软件提供的各种功能
b) QQ
c) 特点1:软件需要的所有文件,都直接从本地安装文件夹中获取,速度和效果很好
d) 特点2:软件如果有新功能更新,需要重新下载安装包
2) B/S结构:Browser-Server浏览器服务器软件
a)在自己的客户端电脑上,只需要有一个浏览器,就可以使用软件提供的各种功能
b) 淘宝
c) 特点1:软件需要的所有文件,都需要通过网络进行获取,速度和效果较较好
d)特点2:直接在服务器端更新,客户端不做任何处理就可以使用新功能!
3)目标:当网速不在是问题,B/S结构的软件会是现在和将来的趋势
a) 重点:B/S结构的网络软件
关于网站:
网站:通过浏览器中输入Url地址访问的在线的服务,称为网站
静态网站:纯网页,网页中的内容是固定的,不会变化的!将单纯的这样的网页部署在网络服务器中,其他人就可以通过浏览器进行访问查看,这样的网站成为静态网站,主要用来进行信息展示:学校门户网站
动态网站:数据在网页中,是动态添加上的,并在网站的使用过程中,会伴随着大量的数据动态处理过程!
网页中的数据是动态添加和变化的[商品详情页],并且网站中有大量的数据处理过程、这样的网站称为动态网站,也称为web软件[web应用程序]
PS:动画网页和动态网站
动画网页:是网页中有动画特效,但是所有的数据内容都是提前在网页中固定写好的!
动态网站:网页中可能会没有动画,但是数据是动态添加的,并且会有数据运算和交互
网络传输协议
什么是协议?
数据交互的双方,为了保障数据正确的传输,而协商计议的一种数据交互方式
发送方[发送数据(操作方式)]à 接受方[接受数据(操作方式)]
不管什么样的处理操作方式,数据本身都不会发生变化
发送的数据,如果接收方没有做正确的处理,会产生[乱码]
为什么要有协议?
目的:为了保障数据的正确传输[发送正确、接受正确、展示正确]
原因:因为数据的传输,实在不同的个体之间进行传输的,不同的个体处理数据的方式可能不一致~必须通过协议让数据传输的双方按照一致的操作来处理数据
协议是怎么制定的?
网络互联非盈利组织[OSI]~欧洲计算机制造协会联盟[ISO]—>制定了一套协议标准
ISO/RM七层协议标准[简化的4层协议标准]
所有编程语言的发展史à 标准的制定史
常见的都有什么协议?
FTP/TFTP/...
协议是专门用来格式化定义数据传输的~传输数据~传输端口
协议怎么使用?
在具体的功能开发过程中,软件开发时约定使用
HTTP:超文本传输协议~约定使用80端口;FTP[20/21];SSH[22];
HTTPS[443]
再说HTTPS
请简单描述HTTP和HTTPS的区别?
请简单描述数据安全方面,关于数据加密的一些手段?
先说加密:
什么是加密
加密:通过一定的数据算法,将原始的数据进行混淆运算,生成了一种和原始数据不一致的数据,~这个新生成的数据,就是被加密的数据
加密的核心:算法
明文:原始数据
密文:加密后的数据
[if !supportLists]l [endif]加密的方式
单向加密:只需要加密,不需要解密的方式,如~用户登录密码[新用户注册时,输入了账号+密码,将用户的账号+(加密的密码)存储到数据库;用户登录时,输入账号+密码,将用户输入的账号+(加密的密码) 和数据库中的账号+(加密的密码) 进行比较,相同则登录成功—就可以对用户的登录密码进行保护]
双向加密:需要加密,同时需要解密的方式,如~用户在电商网站进行支付操作时,需要输入支付密码~为了保证安全性,需要对支付密码进行深层加密之后进行传输,服务器获取到被加密的支付密码~需要解密之后,再调用支付宝接口进行支付操作!
双向加密~根据不同的加密解密方式,可以区分为两种操作
对称加密:加密和解密使用同一套秘钥[算法的核心]
非对称加密:加密和解密使用不同的秘钥,典型应用如HTTPS的加密通道
再说HTTPS:使用数字签名证书SSL提供了数据传输安全通道的HTTP协议
再说加密:
为了提高数据的安全性,并不一定对于明文数据直接加密,而是通过各种算法组合、迭代加密次数、添加盐值混淆的手段,提高数据的安全性
明文:”admin”
加密:1混淆盐值:’manager’~2迭代加密md5()加密1880次~3得到最终数据
开始进入web的世界!
目的:数据共享
通过提供服务器,在服务器上承载共享的数据,让在网络中的其他计算机可以分享到服务器上的数据,web数据共享
术语:
服务器:提供服务访问的机器
硬件服务器:如个人PC、刀片等等
软件服务器/web服务器:安装在操作系统上,专门提供数据访问服务的软件,如网络编程时开发的服务端程序、比较成熟的服务器~tomcat/tomee/apache/nginx/uwsgi..
客户端:作为服务器的用户存在的终端~客户端[访问客户所在的终端]
访问服务器的所有的用户,可以是PC、平板、手机、…
主机名称:HOST~在网络中工作的一台PC的名称,在网络中通常通过IP表示
域名:IP地址的一种简易记忆方式~通过自然人比较容易记忆的字符串,替代了复杂的ip地址,如:www.baidu.com-> [DNS域名解析] ->115.239.211.112
端口:应用程序和网络进行通信的接口
资源路径:访问的具体的文件夹路径http://www.baidu.com/index.html
web项目结构
web项目:【服务端】
两部分[服务器 | web应用程序(web app)]
[if !supportLists]l [endif]开发接口函数
def app(env, response):
# env:环境参数,包含了请求中的所有信息
# response:响应参数~包含了响应中可以设置的数据
response(“200 OK”, [(“Content-type”, “text/html”)])
msg = “这是一条数据”
return [msg.encode(“gbk”)]
注意:就是一个普通函数,这个普通函数被加载到服务器中变成了当前web应用程序的接口函数
[if !supportLists]l [endif]开发服务器
from wsgiref.simple_server import make_server
# 创建服务器对象make_server(HOST, PORT, FUNCTION)
server = make_server(“”, 8000, app)
# 启动服务器
server.serve_forever()
使用了内置的实现了wsgi网关接口协议的服务器
开发比较简单!
>> 明天的开发,会更加简单!
最底层[C/C++]à python开发[网络编程]à 内置[wsgi]à 开发服务器
扩展1:关于请求方式
请求:客户端通过url地址向服务器发送的一次数据成为请求[request]
HTTP1.1标准中,制定了8种请求方式,常见的有四种请求方式,常用的有两种请求方式
GET:向服务器请求获取数据
POST:向服务器提交[更新]数据
PUT:向服务器提交[添加]数据
DELETE:向服务器请求删除数据
HEADER:
OPTIONS:
CONNECTION:
TRACE:
备注:HTTP1.1标准中,定义了不同的请求方式表示不同的含义,其实在项目实际操作过程中,最常用的就是GET/POST两种方式,都是和服务器进行数据交互的!
扩展2:请求状态码
在计算机程序开发过程中,NB人喜欢使用整数的方式表示特定的含义
在web开发过程中,请求返回数据结果,也会有一种错误码方式展示请求结果
200:表示请求成功
402:请求需要收费
403:请求被禁止访问
404:请求的资源没有找到
500:表示服务器出错了…
【重要】
概念题[面试题]
[if !supportLists]² [endif]请简要描述HTTP和HTTPS请求协议的区别?
[if !supportLists]² [endif]请描述常见的web开发技术,描述不同的开发语言的开发优势?描述python在web应用开发方面的优势?
[if !supportLists]² [endif]什么是WSGI?
[if !supportLists]² [endif]什么是web接口?
操作题
[if !supportLists]u [endif]可以独立开发wsgi接口支持的web应用程序[demo01.py]
[if !supportLists]u [endif]可以参考开发无常薄 小应用程序[不同的请求URL,处理不同的功能]
扩展题
[if !supportLists]l [endif]请简要描述get请求方式和post请求方式的区别!