flask 快速上手


简介
flask是一个使用python编写的轻量级web应用框架。web应用框架是一种开发框架,用来支持动态网站、网络应用程序及其服务器的开发。本篇博文主要设计及的知识点是:

  • web基础知识
  • flask程序的基本结构
  • URL传递参数
  • URL反转

web基础知识
web及全球广域网,也称为万维网。它是一种基于超文本http协议的、全球性的、动态交互的、跨平台的分布式信息系统。
万维网的工作原理:当你请求一个网络资源的时候,应当在浏览器上输入要访问的网页的统一资源的定位符(url),也可以通过超链接方式连接定位到,请求的那个网页,或者静动态资源。
URL=传输协议+主机名+端口号+(目录)文件名
传输协议一般是http(超文本传输协议)或者HTTPS(安全套接字层超文本传输协议)
flask框架的基本结构
所有的flask程序都必须创建的一个程序实例

from flask import Flask#这段代码是从flask框架中引入flask对象
app = Flask(__name__)#传入_name_这个变量值来初始化flask对象
#下面这行代码指定了python和url函数的映射关系,我们把url与函数之间的关系定义为路由。把被装饰的函数hello_word()通常为index()为路由,index()函数的路由的根目录,index为视图函数,试图函数必须要有返回值,返回简单的字符串,或者简单的HTML内容
@app.route('/')
def hello_world():
    return 'Hello World!'
#flask框架运行需要的服务器环境,一旦服务器开始运行就会进入轮训状态,等待并开始处理请求。
if __name__ == '__main__':
    app.run()
#在APP.run()可以传入一些参数app.run(debug=True)(设置为debug模式)
#app.run()可以传入端口信息app.run(host='0.0.0.0',port='8080')

注意要在pycharm上进行配置,在运行选项卡下的编辑选项,中的其他选项中加入--host=本机ip --port=要开的端口号(不要和常用的混淆)

URL参数传递
可以通过表单和地址栏俩种方式来传递。
通过url传递参数:'/<参数名>/';参数名必须在一对尖括号里面;试图函数中需要设置URl中相同的函数名

# encoding:utf-8
from flask import Flask  # 导入flask框架模板
app = Flask(__name__)  # flask实例化
@app.route('/')  # 定义路由
def hello_world():  # 定义试图函数
    return '这是上传演示'  # 返回值
@app.route('/user/zhangsan')  # 定义路由,传递的参数名是,需要在函数的形参中定义同名的参数
def zhangsan():
    return 'zhangsan'  # 返回值
if __name__ == '__main__':  # 运行
    app.run(debug=True)

如果name没有指定数据类型,那么默认是string数据类型。
可以增加路由:

@app.route('/news/')
def list_news(id):
  return '接收到的id为%s'%id

URL反转
在网页重定向或者模板文件,需要试图函数中定义url,我们必须根据视图函数得到当前所指的url,这就是url函数的反转。

from flask import Flask,url_for#导入flask框架及url_for模块
app=flask(_name_)#flask初始化
@app.route('/')#定义路由
def index()#定义视图函数
    urll=(url_for('news', id='10086'))#视图函数名为参数,进行反转
    return 'url反转内容为:%s'% utl#返回反转的内容
@app.route('/news/'):
def news(id):
  return "参数:%s"%id
if __name__ == '__main__':  # 运行
    app.run(debug=True)

url_for()函数最简单的用法是以函数名作为参数,返回对应的URL。

页面跳转和重定向

flask框架中提供的重定向函数redirect(),该函数的功能是跳转到指定页面的url
from flask import Flask,url_for,redirect#导入flask和url_for和redirect 模块
app=flask(_name_)#flask初始化
@app.route('/')#定义路由
def hello_world():#定义试图函数
    print('首先访问index视图函数')#打印输出
    urll=url_login('user_login')#url反转
@app.route('/user_login')#定义路由
    def user_login()#定位试图函数
        return "这是用户登录页面,登录了才能访问"#返回值
if __name__ == '__main__':  # 当模块被直接运行时,代码才能被运行,当模块被导入时不能被直接运行
    app.run(debug=True)

问题:
什么是flask?
url参数是如何传递的?
网页是如何重定向的?