1. 安装Flask

1.1 安装虚拟环境

mkdir myproject
cd myproject
py -3 -m venv venv
#Linux系统: python3 -m venv venv

 1.2 激活虚拟环境

venv\Scripts\activate
#Linux中: . venv/bin/activate

 1.3 安装Flask

(venv) D:\Tmp\myproject>pip install Flask
2. 第一个Flask程序
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
return 'hello world' if __name__ == '__main__':
app.run()

 

初始化:app = Flask(__name__)

  Flask类只需要有个构造参数即主模块或包的名字,这个参数决定程序的根目录,以便找到相对于根目录的资源文件,这个大部分情况__name__就是所需要的值。

路由:@app.route('/')

  处理函数和和URL的关系,Flask通过修饰器把函数注册为路由。访问http://localhost:5000就会调用index这个视图函数

访问:http://127.0.0.1:5000,页面即可得到hello world.

默认只能本机访问,可以修改端口和允许的主机:app.run(host = '0.0.0.0',port = 7777,debug = True )

3.上下文

Flask有程序上下文和请求两种上下文,Flask使用上下文把一些对象设置为在一个线程内全局可访问。

Flask在分发请求之前,激活或者说推送程序和请求上下文,请求处理完后进行删除。注意一定要激活才可以使用上下文。

4. 请求调度

查看URL和处理函数的映射关系:

这里有一个特殊的映射关系/static/<filename>,这是Flask添加的特殊路由,用于访问静态文件。url_for('static', username='js/test.js')

from flask import Flask, url_for

app = Flask(__name__)

@app.route('/')
def index():
return 'index' @app.route('/login')
def login():
return 'login' @app.route('/user/<username>')
def profile(username):
return '{}\'s profile'.format(username) with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
print(url_for('login', next='/'))
print(url_for('profile', username='John Doe')) /
/login
/login?next=/
/user/John%20Doe
5. 请求钩子

钩子用于处理请求之前或者之后,比如说请求开始前建立数据库连接,Flask支持下面四种钩子:

6. 响应

6.1 响应状态码

@app.route('/')
def index():
return '<h1>Hello World!</h1>',400

6.2  返回respones对象

@app.route('/')
def index():
response = app.make_response('<h1>This document carries a cookie</h1>')
response.set_cookie('name', 'scott')
return response

6.3 重定向

from flask import redirect
app = Flask(__name__) @app.route('/')
def red():
return redirect('https://www.baidu.com')

6.4 abort函数处理错误

@app.route('/login')
def login():
abort(401)
this_is_never_executed() 
7. 渲染模板

从Python内部生成HTML并不好玩,而且实际上非常麻烦,因为您必须自行执行HTML转义以保持应用程序的安全。因为Flask 自动为你配置Jinja2模板引擎。

要呈现模板,您可以使用该render_template() 方法。您所要做的就是提供模板的名称以及想要作为关键字参数传递给模板引擎的变量。以下是如何呈现模板的简单示例:

from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)

 

8. HTTP方法

根据不同的请求方法,执行不同的方法。

from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
9. request
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == 'POST':
if valid_login(request.form['username'],
request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
# the code below is executed if the request method
# was GET or the credentials were invalid
return render_template('login.html', error=error)

要访问在URL(?key=value)中提交的参数,您可以使用 args属性:

searchword = request.args.get('key', '')
10. 文件上传 
from flask import request
from werkzeug.utils import secure_filename @app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
#尽可能以原名字命名,中文会被去掉
f.save('/var/www/uploads/' + secure_filename(f.filename))  

Flask框架(1)-程序基本结构的更多相关文章

  1. Python——Flask框架——程序的结构

    一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...

  2. flask框架的教程--程序的基本结构[二]

    一个简单的程序 from flask import Flask # 实例化app 对象 app = Flask(__name__) @app.route('/') def index(): retur ...

  3. 基于Flask框架的Python web程序的开发实战 <二> 项目组织结构

    看到第七章-大型程序的结构,备受打击,搞不清工厂函数.蓝本.单元测试,不理解这些对象/变量怎么传递的,感觉好乱,虽然按照源码都照抄了,还是不理解.... 缓缓先.... 本来网上的Flask的教程就比 ...

  4. python flask框架学习(二)——第一个flask程序

    第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...

  5. 基于Flask框架的Python web程序的开发实战 <一> 环境搭建

    最近在看<Flask Web开发基于Python的Web应用开发实战>Miguel Grinberg著.安道译 这本书,一步步跟着学习Flask框架的应用,这里做一下笔记 电脑只安装一个P ...

  6. 2nd_SE-结对编程1-基于flask框架的四则运算生成器

    0x00 Coding https://coding.net/u/nikochan/p/2nd_SE/git 0x01 写在前面 因为在上一个作业中,是基于python完成的Command程序.那么再 ...

  7. Flask框架搭建一个日程表

    目录 前言 项目介绍 技术栈 Flask Web开发流程 一.搭建环境 1.1: 创建虚拟环境 1.2: 安装依赖包 1.3: 创建依赖包列表文件 1.4: 测试hello word 二.应用程序开发 ...

  8. Python——Flask框架

    Flask框架相关知识构架 程序的基本结构 模板 Web表单 数据库 电子邮件 程序的结构 用户认证

  9. flask框架下的jinja2模板引擎(1)(模板渲染)

    #转载请留言联系 模板是什么? 在 flask 框架中,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.模板作用即是承担视图函 ...

  10. Flask框架的学习与实战(二):实战小项目

    昨天写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统. blog系统很简单,只有一个页面,然而麻雀虽小五脏俱全.这里目的不是为了做项目而做项目,这篇文章本意是通过这次练习传达 ...

随机推荐

  1. IIS远程发布(Web Deploy)

    作为开发人员,我们之前发布应用很可能是拷贝开发环境上发布好的代码文件到应用服务器硬盘中,然后在IIS中部署网站. 但是今天我们讲的是如果直接在我们的开发环境通过VS远程发布网站到应用服务器上,这将极大 ...

  2. 关于php开发中的字符编码问题总结的几个要点

    用php这么久,今天终于要彻底总结下php乱码问题,因为实在是吃过不少亏啊 1:header("content-type:text/html;charset=utf-8")或者&l ...

  3. MongoDB的学习--索引类型和属性(转)

    原文链接:MongoDB的学习--索引类型和属性 索引类型 MongDB的索引分为以下几种类型:单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 单键索引(Single Field I ...

  4. GraphQL: Object doesn't support property or method 'from'

    From: https://github.com/graphql/graphiql/issues/688 psyCodelist commented 11 days ago Hi, Thank you ...

  5. 【Little Demo】从简单的Tab标签到Tab图片切换

    Tab标签切换效果是比较流行的一种网站页面布局,视觉表现为美观大方,通过标签展示内容.目前在各大网站都有存在这种效果.例如:淘宝的黄金位置使用Tab标签切换效果,网易新闻等. 1.简单的 Tab 标签 ...

  6. Spark机器学习(8):LDA主题模型算法

    1. LDA基础知识 LDA(Latent Dirichlet Allocation)是一种主题模型.LDA一个三层贝叶斯概率模型,包含词.主题和文档三层结构. LDA是一个生成模型,可以用来生成一篇 ...

  7. 利用Xmanager Enterprise 5的passive显示远程linux主机图形化信息

    问题描述: 最初的需求是,安装oracle数据(第一次安装都是图形化linxu进去一步步操作,后续发现可以命令静默安装不调用图形化,学习就是步步入深,方得始终),最初实现window弹出linux主机 ...

  8. SNF快速开发平台3.0之-界面个性化配置+10种皮肤+7种菜单-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

    一.个性配置-首页:可以进行拖动保存配置,下次登录时就会按配置的进行加载 二.个人配置页面 7种菜单用户可自定义配置,和预览效果 10种皮肤自定义配置,和预览效果 皮肤和菜单可以随意组合-部分截图: ...

  9. ASP.NET CORE中判断是否移动端打开网页

    using Microsoft.AspNetCore.Http;using System;using System.Collections.Generic;using System.Text;usin ...

  10. Atitit easyui翻页组件与vue的集成解决方案attilax总结

    Atitit easyui翻页组件与vue的集成解决方案attilax总结 ===============使用1 ===========\paggingUtil_easyui_vue.js2 C:\U ...