GET表示一个读取请求,将从服务器获得网页数据,/表示URL的路径,URL总是以/开头,/就表示首页
HTTP/1.1HTTP/1.1指示采用的HTTP协议版本是1.1。目前HTTP协议的版本就是1.1,但是大部分服务器也支持1.0版本,主要区别在于1.1版本允许多个HTTP请求复用一个TCP连接,以加快传输速度。
200 OK200表示一个成功的响应,后面的OK是说明。失败的响应有404 Not Found:网页不存在,500 Internal Server Error:服务器内部出错,等等
Content-Type: image/jpegContent-Type指示响应的内容,这里是image/jpeg,也有text/html表示HTML网页。请注意,浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是图片。 HTTP响应的Body就是HTML源码
HTML 是用来描述网页的一种语言。
HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (markup language) 标记语言是一套标记标签 (markup tag) HTML 使用标记标签来描述网页HTML 标记标签通常被称为 HTML 标签 (HTML tag)。
HTML 标签是由尖括号包围的关键词,比如 <html> HTML 标签通常是成对出现的,比如 <b> 和 </b> 标签对中的第一个标签是开始标签,第二个标签是结束标签 开始和结束标签也被称为开放标签和闭合标签HTML 文档 = 网页
HTML 文档描述网页 HTML 文档包含 HTML 标签和纯文本 HTML 文档也被称为网页一个Web应用的本质就是:
浏览器发送一个HTTP请求; 服务器收到请求,生成一个HTML文档; 服务器把HTML文档作为HTTP响应的Body发送给浏览器; 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。如果要动态生成HTML,我们又不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。 这个接口就是WSGI:Web Server Gateway Interface。
确保以上两个文件在同一个目录下
启动成功后,打开浏览器,输入http://localhost:8000/,就可以看到结果了:
我们直接用最流行的Flask来进行实验 我们先用pip安装Flask:
pip install flask然后写一个app.py,处理3个URL,分别是:
GET /:首页,返回Home; GET /signin:登录页,显示登录表单; POST /signin:处理登录表单,显示登录结果。注意噢,同一个URL/signin分别有GET和POST两种请求,映射到两个处理函数中。 Flask通过Python的装饰器在内部自动地把URL和函数给关联起来,所以,我们写出来的代码就像这样:
#!/usr/bin/env python #coding=utf-8 from flask import Flask from flask import request app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def home(): return '<h1>Home</h1>' @app.route('/signin', methods=['GET']) def signin_form(): return '''<form action="/signin" method="post"> <p><input name="username"></p> <p><input name="password" type="password"></p> <p><button type="submit">Sign In</button></p> </form>''' @app.route('/signin', methods=['POST']) def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': return '<h3>Hello, admin!</h3>' return '<h3>Bad username or password.</h3>' if __name__ == '__main__': app.run()打开浏览器,输入首页地址http://localhost:5000/: 首页显示正确!
再在浏览器地址栏输入http://localhost:5000/signin,会显示登录表单: 输入预设的用户名admin和口令password,登录成功: 输入其他错误的用户名和口令,登录失败: