django---扫盲篇

什么是软件
软件:

计算机中按照特定的顺序组织的计算机数据和指令的集合,是一个或者一些功能实现的集合,简而言之,软件就是计算机中可运行的程序。

软件的分类

软件在计算机中一般分为三类,系统软件,应用软件和介于两者之间的中间件。

系统软件

直接安装在计算机硬件上进行数据交互的大型软件,是对计算机硬件的第一次扩展,其他软件都是在系统软件上运行的。

常见的系统软件:window、Android、Linux、UNIX等。
应用软件

安装在操作系统之上,用来完成某个或者某些功能的软件,我们常常说的软件大多数时候指的就是应用软件,如office、浏览器、聊天软件等待。

应用软件的分类

我们一般分类,按照不同的标准会得到不同的分类,如果我们对应用软件安装是否可以上网(联网)来分,可以得到两大类:单机软件和网络软件。安装是否需要本地安装客户端,也可以得到两大类:C/S架构软件和B/S架构软件。

单机软件

安装在操作系统上,可以独立运行并且可以不需要网络软件的功能的应用软件,如office办公软件,单机游戏等。

网络软件

安装在操作系统上,必须要连接网络才能正常执行软件功能的应用软件,如社交软件QQ、微信、电子邮箱、爱奇艺等。

C/S结构软件

该类软件由两部分组成,client(客户端)和server(服务器端)组成。用户一般需要先下载安装客户端,之后使用客户端来连接服务器,如QQ、微信、MySQL数据库等。

B/S结构软件

该类软件一般之后服务器端(server),而客户端由第三方提供的浏览器(browser)提供,用户使用的时候,不需要下载安装客户端,只要安装了浏览器即可。用户通过浏览器来访问服务器,浏览器就是界面和客户端。

web软件

什么是web?

WEB:英文单词[网状物],主要用于表示计算机中的广域网络[world wide web](www)。
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/OSPEIGMP/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协议通道,简称安全的超文本传输协议

web开发行业术语

硬件:组成计算机的各种元器件,如CPU、硬盘、键盘、鼠标等。
服务器:专门用于提供网络数据访问服务的主机。
客户端:发起请求访问数据的主机的计算机软件。

网络:有大量计算机和网络介质组成,用于计算机间进行数据交互。
协议:访问数据的数据编码及传输方式或者规定。

软件

web服务器:专门将指定大数据共享在网络中的一种数据容器软件
web程序:可以在网络上访问并且进行数据处理的程序
web接口:浏览器通过url地址可以访问调用的一个函数或者方法

GET和POST的区别

1、 提交参数的位置不同:

GET 提交的数据会放在 URL 之后,以?分割 URL 和传输数据,参数之间以&相连,如

<u>http://www.baidu.com/test?name=test&id=123456</u>

POST 方法是把提交的数据放在 HTTP 包的Body中。

2、提交参数的大小不同(理论上,存在争议):

GET 提交的数据大小有限制(因为浏览器对 URL 的长度有限制),这点要根据实际情况而论,目前浏览器种类比较多,不同的浏览器大小限制不同。

而 POST 方法提交的数据理论上没有限制,但是不建议太大。

3、安全问题上:

GET 方式提交数据,会带来安全问题,因为参数是裸露在地址栏上,所以较不安全。

POST方式参数在body中,所以安全性较高(注意:只是较高,不是很安全,在http协议下,不管哪种提交方式,都是明码提交,只要有抓包工具,都能抓取数据的!!!)

4、是否浏览器可以收藏

GET请求因为参数在地址栏上,因此可以收藏(因为参数也会保存啊)。

而POST请求不行,不能被浏览器收藏,因为参数无法被浏览器保存。

wsgi接口开发

wsgi(web server gateway interface):web服务网管接口,是一个web服务网关接口组件。

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

在Python中,Python语言也实现了wsgi的web接口编程,如下代码案例演示:

"""
python使用wsgi编程demo
"""
def index(env,respose):
    # 设置响应头信息
    respose("200 OK",[("Content-Type","text/html;charset=utf-8")])
    print(env)
    print(env["PATH_INFO"])
    print(env["QUERY_STRING"])
    msg = "欢迎访问我的第一个页面"
    return [msg.encode("utf-8")]

# 导入Python实现了wsgi接口编程的模块和方法
from wsgiref.simple_server import  make_server

# 设置ip地址和端口及处理函数
httpd = make_server("",8080,app=index)

# 启动服务器
httpd.serve_forever()

启动程序,使用浏览器访问<u>http://localhost:8080/</u>

打印控制台env参数查看,我们发现env是一个字典,注意其中PATH_INFO和QUERY_STRING这两个key对应的值。

PATH_INFO获取的就是该页面的URI,我们就可以利用它来传递参数

QUERY_STRING获取的是使用get请求传递的参数。

第一套简单web程序

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

绣春刀——无常簿

需求:相传明洪武年间,东西两厂各执牛耳把持天下,尤以东厂厂公手中一本无常簿最是恐怖,只要上了无常簿的人,不论是王公大臣还是塞外王侯,都不过是阎王叫你三更死,绝不留人到五更
无常簿:
查看所有可疑人员名单 http://localhost:8000/findall
查看所有良民名单列表 http://localhost:8000/findgood
查看所有嫌犯人员名单 http://localhost:8000/findbad

实现如下:

# 导入python实现了wsgi网关接口的模块
from wsgiref.simple_server import make_server
"""
    一个基于WSGI编程的demo
"""
all_name = ["吴庭艳", "赵雨", "任彦彪", "张书豪", "刘栋宇", "高家星", "刘杰"]


def index(env, response):
    """
    :param env: 上下文环境
    :param response: 相应对象
    :return: 类型是二进制数据,为页面展示提供数据
    """
    response("200 OK", [("Content-Type", "text/html;charset=utf-8")])
    # QUERY_STRING 传递客户端的参数 注意是?这种传参方式
    # params = env["QUERY_STRING"]
    # name = params.split("=")
    # print(name)
    # print("客户端传递过来了name={}")

    path = env["PATH_INFO"][1:]
    print(path)

    # if path == "login":
    #     return login(env, response)
    if path == "findall":
        return findall(env, response)
    elif path == "findgood":
        return findgood(env, response)
    elif path == "findbad":
        return findbad(env, response)
    else:
        msg = "<h5>    相传明洪武年间,东西两厂各执牛耳把持天下,尤以东厂厂公手中一本无常簿最是恐怖,<br>" \
              "只要上了无常簿的人,不论是王公大臣还是塞外王侯,都不过是阎王叫你三更死,绝不留<br>" \
              "人到五更</h5>" \
              "无常簿:<br>" \
              "查看所有可疑人员名单   http://localhost:8000/findall<br>"\
              "查看所有良民名单列表   http://localhost:8000/findgood<br>" \
              "查看所有嫌犯人员名单   http://localhost:8000/findbad<br>"
        return [msg.encode("utf-8")]


# def login(env, response):
#     css = open("templates/css3.html", "r", encoding="utf-8")
#     content = css.read()
#     return [content.encode("utf-8")]


def findall(env, response):
    ls3 = ','.join(all_name)
    return [("所有可疑人员名单:<br>%s" % ls3).encode("utf-8")]


def findgood(env, response):
    good_name = [all_name[0], all_name[2], all_name[4], all_name[6]]
    good = ','.join(good_name)
    return [("所有良民名单列表:<br>%s" % good).encode("utf-8")]


def findbad(env, response):
    bad_name = [all_name[1], all_name[3], all_name[5]]
    bad = ','.join(bad_name)
    return [("所有嫌犯人员名单:<br>%s" % bad).encode("utf-8")]

if __name__ == '__main__':
    # 构建一个wsgi web网关接口的应用
    server = make_server("", 8080, app=index)
    print(" server running……")
    # 启动应用
    server.serve_forever()

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

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,928评论 2 89
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,979评论 3 119
  • 一面墙,那种纯人凿的长方体石块砌的,墙是用来圈土的,土是用来种菜的,嗯,那种绿油油的菜,菜叶上稀稀疏疏有着棕褐色斑...
    窈九阅读 214评论 0 0
  • 转载自:https://segmentfault.com/a/1190000005053782 http://ww...
    天字一等阅读 142评论 0 0
  • 3月对于我来说很有正能量。年假修完回京后又一切步入正轨让接下来的90天实践更有满足感和自豪感。 在3.25号我完成...
    瓶盖715阅读 228评论 0 1