python是一种跨平台的计算机语言,是一种解释型、面向对象和动态数据的高级程序设计语言。
- python3.x设计理念更加高效合理和人性化,代码开发和运行效率更高。
- python2.x不同于python3.x,互相有很多用法不兼容。
Python语言特点:
- 开源、免费、功能强大。
- 语法简单清晰,强制用空白符作为语句缩进。
- 具有丰富和强大的库。
- 是解释型语言,变量类型可变类似于JavaScript。
- 易读、易维护,用途广。
主流开发工具与环境:
- Python自带开发环境
官网::https://www.python.org/downloads/windows
简单 - PyCharm与Python开发环境
官网:http://www.jetbrains.com/pycharm/
下载免费版本:pycharm community - Anaconda与Python开发环境
官网:https://www.continuum.io/downloads
功能强大,本次使用该开发环境
》Python有很多web开发工具,flask是其中一个非常容易的框架。
1、flask安装win+R打开cmd,输入pip install flask
2、编写一个简单的flask服务器#coding=gbk
# 导入flask程序包
import flask
# 初始化flask对象,参数__name__是程序的名称
app=flask.Flask(__name__)
@app.route("/")
def hello():
return "你好"
@app.route("/hi")
def hi():
return "hi,你好"
if __name__=="__main__":
app.run()
运行上述代码控制台显示如下图:
然后在浏览器输入上图中的网址:
-
输入http://127.0.0.1:5000/ ——>显示:你好
-
输入http://127.0.0.1:5000/hi ——>显示:hi,你好
-
index.html实现
Title Welcome Python flask Web
It is very easy to make a website by python Flask. -
用server.py启动web服务,读取index.html页面
import flask app=flask.Flask(__name__) @app.route("/") def index(): try: fobj=open("index.html","rb") data=fobj.read() fobj.close() return data except Exception as err: return str(err) if __name__=="__main__": app.run()
3.用client.py作为一个客户端访问index.html访问页面
**注意:**client.py是作为一个客户端从server.py这个服务器上读取信息的
import urllib.request url="http://127.0.0.1:5000" resp=urllib.request.urlopen(url) data=resp.read() html=data.decode() print(html)三、GET方法访问网站
访问网站最常用的一种方法是GET方法,这种方法主要是从客户端从服务器获取网站数据,如果有交互,客户端把参数附加到网址后面向服务器提供参数,服务器根据不同的参数做出不同的响应。
-
客户端GET方式发送数据
GET方式发送的数据附加在URL后面,在URL之后用一个“?”连接,数据采用:“名称1=值1&名称2=值2······”
import urllib.request url="http://127.0.0.1:5000" p="广东" c="深圳" p=urllib.parse.quote(p)#对汉字进行编码UTF-8 c=urllib.parse.quote(c) data="province="+p+"&city="+c resp=urllib.request.urlopen(url+"?"+data) data=resp.read() html=data.decode() print(html)
-
服务器获取GET发送的数据
服务器用Flask中的request对象的args来存储GET参数,用get方法获取参数。
import flask app=flask.Flask(__name__) @app.route("/") def index(): try: ''' 如果province有传递来的值,则获取传过来的具体值 如果province没有传递的值,则province将获取到一个空值“” ''' province=flask.request.args.get("province") city=flask.request.args.get("city") return province+","+city except Exception as err: return str(err) if __name__=="__main__": app.run()
-
客户端POST发送数据
POST方法访问网站时客户端向服务器发送表单数据,表单数据组织方式与GET方法参数列表相似,结构:“名称1=值1&名称2=值2······”#客户端POST发送数据 import urllib.parse import urllib.request url="http://127.0.0.1:5000" try: province=urllib.parse.quote("广东") city=urllib.parse.quote("深圳") data="province="+province+"&city="+city data=data.encode() html=urllib.request.urlopen(url,data=data) html=html.read() html=html.decode() print(html) except Exception as err: print(err) -
服务器获取POST数据
服务器用Flask中的request对象的form来存储POST的参数,用get方法获取参数#服务器获取POST数据 import flask app=flask.Flask("__name__") @app.route("/",methods=["POST"]) def index(): try: province=flask.request.form.get("province") city=flask.request.form.get("city") return province+","+city except Exception as err: return str(err) if __name__=="__main__": app.run()
- 服务器获取数据
import flask
app=flask.Flask(__name__)
@app.route("/",methods=["GET","POST"])
def index():
try:
province=flask.request.args.get("province")
city=flask.request.args.get("city")
note=flask.request.form.get("note")
return province+","+city+"n"+note
except Exception as err:
print(err)
if __name__=="__main__":
app.run()
代码优化: 用values替换args和form
import flask
app=flask.Flask(__name__)
@app.route("/",methods=["GET","POST"])
def index():
try:
province=flask.request.values.get("province")
city=flask.request.values.get("city")
note=flask.request.values.get("note")
print(province+"n"+city+"n"+note)
return province+","+city+"n"+note
except Exception as err:
print(err)
if __name__=="__main__":
app.run()
- 客户端发送数据
import urllib.parse
import urllib.request
url="http://127.0.0.1:5000"
note="深林人不知,明月来相照"
province=urllib.parse.quote("广东")
city=urllib.parse.quote("深圳")
try:
note="note="+urllib.parse.quote(note)
param="province="+province+"&city="+city
html=urllib.request.urlopen("http://127.0.0.1:5000?"+param,data=note.encode())
html=html.read()
html=html.decode()
print(html)
except Exception as err:
print(err)



