Flask框架(一)—— Flask简介

Flask框架介绍

一、Flask简介

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

“微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。

默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用

二、flask安装与使用

1、安装

pip3 install flask

2、使用

from flask import Flask

# 实例化产生一个Flask对象
app = Flask(__name__) # 将 '/'和视图函数hello_workd的对应关系添加到路由中
@app.route('/')
def func():
return 'hello world!' if __name__ == '__main__':
app.run() # 最终调用了run_simple()

3、简单案例——flask实现用户登录

(1)main.py

from flask import Flask, request, render_template, redirect, session

app = Flask(__name__)

app.debug = True

app.secret_key = 'asdfghjkl'    # session必须要写上secret_key,session加密所用的盐

USER_INFO = {
1: {'name': '张三', 'age': 18, 'gender': '男', 'text': "张三详情"},
2: {'name': '李四', 'age': 44, 'gender': '女', 'text': "李四详情"},
3: {'name': '王五', 'age': 23, 'gender': '女', 'text': "王五详情"},
} # 登录认证装饰器
def login_auth(func):
def inner(*args, **kwargs):
if not session.get('name'):
return redirect('/login') return inner @app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html') else:
name = request.form.get('name')
pwd = request.form.get('pwd')
if name == 'wl' and pwd == '123':
session['user'] = name
return render_template('user_info.html', user_info=USER_INFO)
else:
return render_template('login.html', error='用户名或密码错误') @app.route('/userdetail/<int:id>', methods=['GET'])
@login_auth
def userdetail(id):
user = USER_INFO.get(id)
if user:
return render_template('userdetail.html', user=user)
else:
return '该用户不存在' if __name__ == '__main__':
app.run()

(2)templates

login.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
<p>用户名:<input type="text" name="name"></p>
<p>密码:<input type="password" name="pwd"></p>
<input type="submit"><span>{{error}}</span>
</form>
</body>
</html>

user_info.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户信息</title>
</head>
<body>
<table border="1px">
<thead>
<tr>
<th>id</th>
<th>姓名</th>
<th>详情</th>
</tr>
</thead>
<tbody>
<!-- 这里的items要加括号,否则报错 -->
{% for k,v in user_info.items() %}
<tr>
<td>{{k}}</td>
<td>{{v.name}}</td>
<td><a href="/userdetail/{{k}}">查看详情</a></td>
</tr>
{% endfor %} </tbody>
</table>
</body>
</html>

userdetail.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>详情</title>
</head>
<body>
<table border="1px">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>信息</th> </tr>
</thead>
<tbody>
<tr>
<td>{{user.name}}</td>
<td>{{user.age}}</td>
<td>{{user.text}}</td>
</tr> </tbody>
</table>
</body>
</html>
博客内容仅供参考,部分参考他人优秀博文,仅供学习使用

Flask框架(一)—— Flask简介的更多相关文章

  1. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

  2. Flask 框架app = Flask(__name__) 解析

    #!/usr/local/bin/python # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') ...

  3. flask框架----整合Flask中的目录结构

    一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...

  4. flask框架----基于flask的扩展实现的简单的页面登录

    废话不多说,直接上代码 from flask import Flask,render_template,request,redirect,session app = Flask(__name__,te ...

  5. Flask框架从入门到实战

    Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...

  6. python之Flask框架

    一.简单的Flask框架 1)flask简介 Flask 是一个 web 框架.也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序. 这个 wdb 应用程序可以使一些 we ...

  7. Python 什么是flask框架?快速入门

    一:Python flask框架 前言 1.Python 面向对象的高级编程语言,以其语法简单.免费开源.免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析. ...

  8. Flask框架函数

    title: flask学习笔记 subtitle: 1. flask框架函数 date: 2018-12-14 10:17:28 --- Flask学习 学习Miguel Grinberg的2017 ...

  9. Flask 框架小记

    Flask 框架小记 Flask 实例 创建示例的代码 from flask import Flask # __name__ 是模块名, 用于反射导入模块 app = Flask(__name__, ...

随机推荐

  1. redis中如何存储java对象

    根据redis的存储原理,Redis的key和value都支持二进制安全的字符串 1.利用序列化和反序列化的方式 存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用red ...

  2. Linux系统中的硬件问题如何排查?(4)

    Linux系统中的硬件问题如何排查?(4) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...

  3. J2EE知识总结——面试、笔试

    9.2 jdk 1.8的新特性(核心是Lambda 表达式) 参考链接:http://www.bubuko.com/infodetail-690646.html (1)接口的默认方法 (给接口添加一个 ...

  4. 【leetcode】Increasing Triplet Subsequence

    Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the ar ...

  5. vmware哪个版本好用

    这个问题要根据你的物理机操作系统而定,如果你电脑是xp,就选择vmw7.1.6:如果你电脑是win7,win8,win8.1,就选择vmw10.0.1.不要去理会vmw8.vmw9这些都是vmw10的 ...

  6. postman批量调用接口并发测试

    本文出自:https://www.cnblogs.com/2186009311CFF/p/11425913.html 接口测试在开发中很容易遇到,下面是请教别人学会的并发测试,希望能帮到需要用到的你, ...

  7. artTemplate字符串模板

    1.官网:http://aui.github.io/art-template/

  8. SDRAM学习笔记

    摘自“开源骚客视频教程” 1.仲裁模块就是用来控制什么时候读.写.刷新 2.模块中的状态机 3.初始化时序图说明,来自“IS42S116160.pdf”文件 4.SDRAM写时序图,来自“IS42S1 ...

  9. SQL基础-order by

    若sql语句中order by指定了多个字段,则怎么排序? 举个例子吧:order by id desc,time desc 先是按 id 降序排列  (优先)如果 id 字段 有些是一样的话   再 ...

  10. c++ 初学者 慢慢成长中

    C++书籍推荐 从上往下 Essential C++ C++ Primer 中文版 Effeetive C++ More Effeetive C++ C++ 标准程序库 深度探索c++对象模型 C11