Python之Flask框架学习笔记(一)

倖福魔咒の 提交于 2019-12-18 02:57:04

**

Flask是目前学习python遇到的第一个框架,一种轻量级的web框架

**
后面还有ajax,diango等着我去学习。下学期就要去实习了,时间好紧张啊。。公司一般都是要求会用这几个框架开发服务器。感觉学到这里才是python入门的开始
由于我自学的时间比较短,很多基础不太扎实,上一次有一个电话面试,问我什么是http协议等等等。。。。我都一时间答不上来,虽然学过了,但是却没有巩固好,这是很致命的问题,所以现在我把每天学的都必须巩固一遍。

动态网页&静态网页

 1.动态网页可以和服务器交互,可以根据服务器的一些指令进行随时修改页面。
 2.静态网页不能和服务器交互

WEB和服务器

Web(html,css,js)
服务器:
	1.什么是服务器? 能够给用户提供服务的计算机,由硬件+软件组成
	2.硬件:一台主机即可
	   软件:一个能够处理用户请求并给出响应的程序(在Linux和windows都可以)
	   比较有名的服务器软件:
	   			1.APACHE 
				2.TOMCAT(学校学java的时候用到过)
				3.IIS - Internet Information Service
				4.Nginx
	   
	   那服务器有什么作用呢?
	 
		1.存储WEB上的信息 
		2.能够处理用户的请求(request)并给出响应(response)
		3.执行处理程序
		4.具备一定的安全功能

什么是框架

1.框架是一个为了解决开放性问题而存在的程序结构
2.Python WEB 框架
	1.Flask - 轻量级框架
	2.Webpy - 轻量级框架
	3.Tornado - 异步框架
	4.Django - 重量级框架
3.框架模式
	1.MTV
		M:Models,模型层,与数据库打交道 - ORM
		T:Templates,模板层,前端页面
		V:Views,视图层,处理与用户打交道的内容
	2.MVC
		M:Models,模型层,与数据库打交道 - ORM
		V:Views,视图层,前端页面
		C:Controller,控制器,处理请求和响应

		M --- M
		T --- V
		V --- C

Flask框架

	1.什么是Flask
	Flask是一个基于Python并且依赖于Jinja2模板引擎和
	Werkzeug WSGI 服务的一个微型框架(Micro Framework)

安装flask

	1.查看已安装的Flask版本
		进入到Python交互模式
		>>> import flask
			没反应:正确
			有反应:没安装 或 安装有问题
		>>> flask.__version__
	2.安装Flask	
		sudo pip3 install flask 

Flask–路由(route)

	1.什么是路由
	路由是为了匹配用户的请求地址以及对应的视图函数
	说的通俗点,没有路由就连接不上网络,导致程序无法运行
	在 Flask 中,路由是通过 @app.route() 来表示的()里面是要连接的地址

语法
语法:

from flask import Flask
app = Flask(__name__) 
@app.route('/地址')
		def funName():
		#业务实现
		return "" # 响应给客户端浏览器的内容

举个例子:(’/’) 就等同于 (’/127.0.0.1:5000’) 为了方便通常都用/表示
注意:一定要有return 返回值 不然网页没法响应 (在网页上会显示return的内容)

			1. http://127.0.0.1:5000
				@app.route('/') 
				def index():
					return "这是首页"
			
			2. http://127.0.0.1:5000/admin/login
				@app.route('/admin/login')
				def login():
					return "xxxx"

一个最简单的程序

from flask import  Flask
app = Flask(__name__)
@app.route('/')
def app1():
    return "第一个程序"

if __name__ =="__main__":
    app.run(debug=True)

运行程序如下图所示:
在这里插入图片描述
在网页上输入127.0.0.1:5000
在这里插入图片描述

带参数的路由

1.基本带参路由
		参数语法:通过 <参数名>
		@app.route('/show/<name>')
		def show(name):
			# name 表示的就是路由中的name参数值
			pass
2.带多个参数的路由
		@app.route('/show/<name>/<age>')
		def show(name,age):
			#name 表示的就是路由中的name参数值
			#age  表示的就是路由中的age 参数值
from flask import  Flask

app = Flask(__name__)

@app.route('/test/<name>/<age>')
def app2(name, age):
    print(name, age)#打印在终端
    return "name:%s,   age:%s" % (name, age)

if __name__ =="__main__":
    app.run(debug=True)

127.0.0.1:5000/test/name/age name和age 是可以变的 随便自己输入
在这里插入图片描述

指定参数类型的路由

		@app.route('/show/<int:num1>')
		def show(num1):
			num1 允许直接当成整数去处理
		
		int:称为 "类型转换器"

		Flask中所支持的类型转换器:
			类型转换器         作用
			缺省               字符串,不能包含斜杠(/)   
			int:               整数
			float:             浮点数
			path:              字符串,允许包含斜杠(/)

来一个例题加深理解:写一个输入两个数字a,b,网页上显示 ab的加减乘除结果

from flask import  Flask
app = Flask(__name__)

@app.route('/test/<int:num1>/<int:num2>')
def app2(num1, num2):
    r1 = num1 + num2
    r2 = num1 - num2
    r3 = num1 * num2
    r4 = num1 / num2
    r5 = num1 % num2
    #<br>换行 ""里可以添加html标签
    str = "<h1>%s + %s = %s<br></h1>" % (num1, num2, r1)
    str += "%s - %s = %s <br> "% (num1, num2, r2)
    str += "%s * %s = %s <br>" % (num1, num2, r3)
    str += "%s / %s = %s <br>" % (num1, num2, r4)
    str += "%s %% %s = %s" % (num1, num2, r5)
    return str

if __name__ =="__main__":
    app.run(debug=True)

在网页上输入127.0.0.1:5000/test/10/5
在这里插入图片描述

多url的路由匹配

		1.什么是多url的路由匹配
			多个访问地址最终匹配到同一个视图处理函数
			需求:
				http://127.0.0.1:5000
				http://127.0.0.1:5000/index
				http://127.0.0.1:5000/default

				访问任何一个地址,要在网页中输出:
					这是首页

			语法:
				@app.route('/地址1')
				@app.route('/地址2')
				.... ....
				def index():
					return xxxx xxxx

例:


@app.route('/')
@app.route('/index')
@app.route('/show')
def index():
    return "这是首页"

在这里插入图片描述
在这里插入图片描述
做个小练习

@app.route('/')
@app.route('/index')
@app.route('/index/<int:num>')
@app.route('/<int:num>')
def show(num=1): # num不存在时,默认为1
    return "你现在访问的是第%s页" % num

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

先写到到这,下篇写模板.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!