web开发概述

Django深入浅出-web概述

目录

Django深入浅出-web概述 1

1. 软件分类 1

2. web软件概述 2

3. web开发行业术语 4

4. wsgi接口开发 4

5. 第一套简单web程序 6

6. 扩展:多环境多项目协同开发 6

7. 扩展:pycharm virtualenv 7

8. 常见的web开发框架 8

9. 总结:web软件专业术语、组成部分、处理流程、编程步骤 9


[if !supportLists]1. [endif]软件分类

什么是软件?

软件:计算机中按照特定的顺序组织的计算机数据和指令的集合!一般情况下软件被分为系统软件、应用软件以及介于两者之间的中间件


软件:就是计算机中可运行的程序


软件的分类?

系统软件:直接安装在硬件上和计算机硬件进行数据交互大软件,如windows操作系统、android手机操作系统等等


应用软件:安装在操作系统上,用于解决一定的实际业务问题的软件,如office办公软件、QQ聊天交互软件等等


中间件:应用软件和操作系统软件交互的特殊的软件,如负载均衡软件等等


应用软件的分类:

[应用是否联网]

单机软件:安装在操作系统上,可以独立运行并执行软件的功能的应用软件,如office办公软件


网络软件:安装在操作系统上,必须要连接网络才能正常执行软件功能的应用软件,如社交软件QQ


[应用客户端是否需要安装]

C/S结构软件:客户端(Client)服务器(Server)软件,客户端需要单独下载安装之后,才能正常操作的软件


B/S结构软件:浏览器(Browser)服务器(Server)软件,客户端不需要下载安装,只需要用户的电脑上安装有浏览器就可以正常使用软件的全部功能


Django的重点【关键词】

网络软件

B/S结构


B/S结构的网络软件的开发,一般称为web软件的开发

PS:web网站和web软件的区别

web网站一般是主要用于信息展示的网络软件,客户端可以通过浏览器访问指定的url地址的方式来访问到需要大信息,此类软件数据处理量很小甚至没有,如政府部门介绍网站等等

web软件一般主要用于进行信息展示及数据处理的软件,客户端可以通过浏览器访问指定的url地址并进行一定的数据处理功能,如淘宝、京东网站等等


[if !supportLists]2. [endif]web软件概述

什么是web?

web,英文单词[网状物],主要用于表示计算机中的广域网络[world wide web]


world wide web:全球广域网络,也称为万维网,是一种基于超文本和HTTP的全球性的、动态交互的、跨平台的分布式图形信息系统,是建立在internet上的一种网络服务


什么是web软件?

web软件,是一种基于web为其数据交互基础的计算机软件

该类型软件,通过web万维网的数据交互协议,通过网络进行数据传输

主要目的是高效率的跨平台跨地区数据共享


什么是协议?

协议:是一种共同协商、计议之后通过的一种约定

互联网中的协议:互联网中的不同主机之间互相传递数据的一种约定,由OSI组织定义协议的描述模型(通常称为7层网络传输模型),规范网络传输的各种协议性质。

PS1:OSI(Open System Initiative)开放式系统互联,一个推动开源软件发展的非盈利性质的组织


PS2:OSI/RM参考模型(Open System Interconnection Reference Model),是由国际化标准ISO(International Oranization for Standardization)提出的一个网络系统互联参考模型


PS3:OSI/RM参考模型

OSI模型层功能描述涉及协议

应用层

Application layer

文件传输、电子邮件等等FTP/TFTP/HTTP/SMTP/

DNS/Telnet..

表示层

Presentation layer

数据格式化、代码转换

数据加密等等

会话层

Session layer

建立或者解除与其他节点之间的联系无

传输层

Transport layer

提供端对端的接口TCP/UDP

网络层

Network layer

数据包传输路由IP/ICMP/RIP/OSPE

IGMP/BGP..

数据链路层

Datalink layer

传输有地址的帧

错误检测功能

SLIP/GSLIP/PPP/

ARP/RAPR/MTU..

物理层

Physical layer

二进制数据在物理媒体上的传输中继器、集线器、双绞线等等


web开发时使用的网络传输协议?

协议名称描述

IP协议是将多个包交换网络连接起来,在源地址目标地址之间传输数据包并对数据包进行拆分和重组以适应不同的网络大小

TCP协议Transmission Control Protocal 传输控制协议

一种端对端的、可靠的、基于IP的传输层协议

特点:3次握手建立连接;4次挥手断开连接

UDP协议User Datagram Protocal用户数据报协议

一种无连接的传输层协议

FTP协议File Transfer Protocal文件传输协议

TCP/IP协议族中的一种

特点:FTP协议包含两部分[服务器][客户端]

SMTP协议Simple Mail Transfer 简单邮件传输协议

TCP/IP协议族中的一种

邮件发送服务协议

POP3协议Post Office Protocal-Version3 邮局协议版本3

TCP/IP协议族中的一种

HTTP协议HyperText Transfer Protocal超文本传输协议

HTTPS协议HyperText Transfer Protocal over Secure Socket Layer

安全HTTP协议通道,简称安全的超文本传输协议


[if !supportLists]3. [endif]web开发行业术语

硬件

服务器:专门用于提供网络数据访问服务的主机

客户端:发起请求访问数据的主机


网络

协议:访问数据的数据编码及传输方式


软件

web服务器:专门将指定大数据共享在网络中的一种数据容器软件

web程序:可以在网络上访问并且进行数据处理的程序

web接口:浏览器通过url地址可以访问调用的一个函数或者方法


..

[if !supportLists]4. [endif]wsgi接口开发

wsgi接口:全名为(web server gateway interface)是一个web服务网关接口组件


所谓网关接口,就是指代的一个处理节点,处理节点反映到web程序中就是一个简单的处理函数,如定义一个处理根节点的接口(index)[web_demo01.py]

def index(env, response):

response(“200 OK”, [(“Content-type”, “text/html”)])

return [b”

Hello Web!

”]

PS:固定语法,wsgi接口函数包含两个参数

env参数:请求中包含的环境变量上下文信息

response参数:响应操作对象


既然是网关服务接口,定义好接口之后,接下来就是启动web服务器,让接口暴露在网络上以供其他人访问[web_demo01.py]

from wsgiref.simple_server import make_server


httpd = make_server(“”, 8000, index)

print(“web server starting……”)

httpd.serve_forever()


运行上述程序

python web_demo01.py


打开浏览器,地址栏访问指定大url地址:http://localhost:8000



[if !supportLists]l [endif]扩展:获取客户端发送的参数数据

定义wsgi接口函数

def index(env, response):

response(“200 OK”, [(“Content-type”, “text/html)])

name = env[“PATH_INFO”][1:]

msg = “

hello %s!

” % (name or ‘web’)

return [name.encode(“utf-8”)]


编写服务启动程序,启动服务器并进行访问

from wsgiref.simple_server import make_server


httpd = make_server(‘’, 8000, index)

httpd.serve_forever()


启动服务器之后,浏览器中访问http://localhost:8000/jerry,得到如下结果

备注:请求方式


客户端向服务器发送数据请求,根据请求的性质区分不同的请求方式

HTTP1.1协议中共定义了8种不同的请求方式

[if !supportLists]l [endif]OPTIONS:返回服务器对指定资源数据支持的HTTP请求方法,一般用于测试服务器功能的可用性

[if !supportLists]l [endif]HEAD:返回服务器上对指定资源数据的HTTP请求头,在不需要返回全部数据的情况下测试指定功能大可用性

[if !supportLists]l [endif]GET:向服务器请求指定的资源

[if !supportLists]l [endif]POST:向服务器提交数据请求处理,数据被包含在请求体中

[if !supportLists]l [endif]PUT:向服务器上传指定的数据

[if !supportLists]l [endif]DELETE:向服务器发送请求删除指定数据

[if !supportLists]l [endif]TRACE:回显服务器收到的请求,主要进行功能测试诊断

[if !supportLists]l [endif]CONNECT:HTTP1.1协议中预留请求方式,可以将连接改为管道方式的代理服务器


[if !supportLists]5. [endif]第一套简单web程序

PS:软件核心处理结构开发


绣春刀——无常簿

需求:相传明洪武年间,东西两厂各执牛耳把持天下,尤以东厂厂公手中一本无常簿最是恐怖,只要上了无常簿的人,不论是王公大臣还是塞外王侯,都不过是阎王叫你三更死,绝不留人到五更


无常簿:

查看所有可疑人员名单   http://localhost:8000/findall

查看所有良民名单列表   http://localhost:8000/findgood

查看所有嫌犯人员名单   http://localhost:8000/findbad


[if !supportLists]6. [endif]扩展:多环境多项目协同开发

由于不同的web项目,可能依赖的项目环境是不一样的,如公司前期项目开发依赖的是python2.7的开发环境,开发的web框架使用的是django1.8,过一段时间之后,公司项目组响应国家号召与时俱进,python开发环境调整成了3.4的版本,同时web框架也相应进行了调整,使用django1.11进行开发,此时我们在自己的开发电脑上,就需要有满足原始项目的开发环境,同时有满足当前项目开发的环境,就需要多个环境进行不同的切换工作了。


核心的问题主要集中在两点

[if !supportLists]l [endif]切换python版本

[if !supportLists]l [endif]切换模块(如django)版本


切换python版本,最简单的操作可以通过配置不同的环境变量来实现,优点是操作简单,缺点是在一台电脑上这样的切换会让不同的项目不能并行运行操作,要付出跟多大代价去实现不同python环境下的项目并行操作,此时有一种切换Python并且满足不同环境操作的工具软件出现了:pyenv,该软件主要应用与Like Unix环境,也就是说通常情况下在Unix/Linux内核环境下可以无缝使用

PS:参考https://github.com/pyenv/pyenv



实现了不同python版本切换之后,不同的项目依赖的模块环境可能不一致,就需要在不同大项目中搭建不同的模块环境,有一个模块是virtualenv,这个虚拟环境就可以通过指定不同大文件夹使用不同大开发环境来实现不同大操作。


本节主要以virtualenv作为重点进行讲解。

PS:大部分的开发主要集中在windows环境下,尤其是python环境的切换在常规项目中比较少见,所以virtualenv的使用还是比较广泛的。


[if !supportLists]6.1. [endif]windows下不同项目的协同开发

下面是virtualenv在windows中的使用方式和常见命令,通过项目驱动的方式进行引导讲解如下:

[if !supportLists]l [endif]virtualevn的安装

pip install virtualenv

virtualenv --version

[if !supportLists]l [endif]指定文件夹,创建一个python虚拟环境

virtualenv [name]命令用于创建一个名称为name的虚拟环境

创建项目文件夹

进入项目文件夹,创建一个python虚拟环境


[if !supportLists]l [endif]切换到虚拟环境进行项目开发

在项目文件夹中,执行[name]/Scripts/activate,启用虚拟环境

启用虚拟环境之后,前面就会多出来一个虚拟环境提示圆括号

此时该文件夹下的项目开发依赖大就是当前虚拟python环境


[if !supportLists]l [endif]退出虚拟环境

退出虚拟环境,通过执行deactivate命令退出即可。

[if !supportLists]7. [endif]扩展:pycharm virtualenv

pycharm作为python开发神器,已经内置了对虚拟Python环境开发的支持

可以在工具中创建多个python开发环境并进行切换以适应不同项目的开发。


[if !supportLists]l [endif]打开设置文件夹,找到python开发环境设置


[if !supportLists]l [endif]点击创建一个虚拟环境


弹出的对话框中,输入虚拟环境的名称以及保存虚拟环境文件的文件夹路径,点击OK创建即可

[if !supportLists]l [endif]pycharm中切换python虚拟环境

创建好不同的虚拟环境之后,就可以通过python interceptor进行不同环境的切换

[if !supportLists]8. [endif]常见的web开发框架

wsgi作为底层的web操作,使用起来开发效率较低,并且编码复杂度较高,要求开发人员对web操作的方方面面都有所涉及和了解才能参加到正常的开发工作中,该模块可以用于进行底层代码建设,但是不适用于常规的企业级项目开发


在常规企业级web项目开发过程中,要求保证开发效率高、开发成本地、开发周期短、见效快等特点,所以在企业级项目开发时会优先选用已经成型的开发框架来降低开发成本提高开发效率。


python常见的web开发框架有很多,并且实现原理和操作方式有所不同,根据实际需求进行选用即可

web.py:轻量级的开源的web框架,简单而且功能强大

Flask:python编写的轻量级web开发框架

Django:python编写的一个开源的web应用框架

Tornado:即是一个web服务器也是一个web框架

[if !supportLists]9. [endif]总结:web软件专业术语、组成部分、处理流程、编程步骤

项目任务:绣春刀——无常簿

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,766评论 0 38
  • pythonweb开发 [if !supportLists]1-1[endif]预期目标 技能:学习[Django...
    AAA年华阅读 2,034评论 0 0
  • 在大学时常想起高考的那段岁月:每人的桌子都堆了一尺高的书,每天都要做几套 “忠哥回来了” ...
    王舒亮阅读 516评论 0 1
  • 银龙 2011.10.23 边城烽烟乱中原, 万里清风不过关。 寂寞旌旗飘空在, 一碗浊酒一时欢。 —end—
    醉仙王子阅读 148评论 0 0
  • 写于昨天 20170604 21:31 悲愤 烦扰 小情绪以及哀怨 突然入侵。 心脏就像要炸裂 沉闷且拥挤 血液无...
    七七阿77阅读 288评论 0 1