python web开发 了解基础点

字数 3643阅读 1005

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请求方式的区别!

推荐阅读更多精彩内容