flask的基础1

1.python 现阶段三大主流web框架Django Tornado Flask的对比

1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架

2.Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架

3.Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架

Django 通常用于大型Web应用由于内置组件足够强大所以使用Django开发可以一气呵成

Tornado 通常用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批

Flask 通常应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用

Django 优点是大而全,缺点也就暴露出来了,这么多的资源一次性全部加载,肯定会造成一部分的资源浪费

Tornado 优点是异步,缺点是干净,连个Session都不支持

Flask 优点是精悍简单,缺点是稳定性较差

2.简单的运行一个flask页面

from flask import Flaskapp = Flask(name)@app.route("/")def index():return "Hello World"app.run(debug=True)

3.Response的三元素

HttpResponse:return “Hello World” 直接返回字符串

from flask import render_templaterender 

return :render_template("login.html")与Django中的 render 使用一致 返回模板由浏览器渲染

from flask import redirectredirect

return :redirect("/login") # 302跳转,重定向URL

Flask独有的

1.from flask import jsonify

retrun jsonify({name:111}) # 返回json标准的字符串

Content-Type:application/json

app.config["JSON_AS_ASCII"] = False # 解决jsonify不能返回汉字问题 ==json.dumps(d, ensure_ascii=False)

2.from flask import send_file

return send_file(path)  #send_file会打开文件并返回文件内容(自动识别文件格式)

4.flask中的request

@app.route("/login", methods=["POST", "GET"]) # 默认的请求方式只有get,在加上menthods参数后会根据添加的请求方式来处理,可以是元组或列表形式

request.method # 请求方式

request.form # 存放FormData中的数据 to_dict 序列化成字典

request.args # 获取URL中的数据 to_dict 序列化成字典

request.url # 访问的完整路径

request.path # 路由地址

request.full_path#带参数的路由地址

request.host # 主机地址

request.values # 获取 FormData and URL中的数据 不要用to_dict

request.json  # 如果提交时请求头中的Content-Type:application/json 字典操作

request.data  # 如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byte

request.cookies # 获取Cookie中的数据

request.headers # 获取请求头

request.files # 序列化文件存储 save()
my_file = request.files.get("my_file") #获取到上传的文件
my_file.save(my_file.filename) #将文件保存在当前环境,最少指定一个文件名

5.jinja2

{{}} 引用变量 执行函数

{%%} 逻辑代码

tag = "<input type='text' name='username'>"
tag = Markup(tag) # 转变成安全标签字符串 #也可以在前端用 | safe
@app.template_global() #全局的函数
def func(a, b):return a + b{{ func(5,6) }}@app.template_filter() #
def fil(a, b, c):return a+b+c{{ 1 | fil(1,2) }}
#也可以在前端定义函数并调用
{% macro create_input(na,ty) %}{{ na }}: <input type="{{ ty }}" name="{{ na }}">
{% endmacro %}{{ create_input("username", "text") }}

6.flask中的session

app.secret_key = "加密字符串" #用于序列化和反序列化session信息

由于Flask中默认Session 存放位置 - 客户端的Cookies中

所以Session需要加密 用到 secret_key

请求进入视图函数 带上cookie 将Session从cookie序列化出来 通过secret_key 反序列化成字典

 

转载于:https://www.cnblogs.com/qq849784670/p/10235614.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现批量压缩文件夹

前段时间碰到一个需要把目录下文件夹压缩的项目&#xff0c;但是度娘里没找到&#xff0c;只好自己写脚本了。 #coding:utf-8 import os filePath raw_input("请输入路径&#xff1a;") if filePath "":os._exit() #需要退出ds list(os.walk(filePath…

单元测试01:nunit 安装与代码测试

1.nunit 下载与安装 a.下载 下载地址&#xff1a; http://nunit.org/download/ b.添加到系统环境变量 解压下载包后&#xff0c;添加两个路径到环境变量&#xff0c;如&#xff1a; D:\nunitD:\nunit\nunit-console 2.建立测试项目 a.建立class project b.project 里re…

如何将您的Google Authenticator凭证移至新的Android手机或平板电脑

Most of the app data on your Android is probably synced online will automatically sync to a new phone or tablet. However, your Google Authenticator credentials won’t — they aren’t synchronized for obvious security reasons. Android上的大多数应用程序数据可…

关于经纬度的两个计算[Teaksxgluxv]

一、子午线周长(公里) 40008.548 赤道周长(公里) 40075.704 纬度40008.548 / 360(度) 111.135 公里/度40008.548 / (360*60)(分) 1.85 公里/分40008.548 / (360*60*60)(秒) 30.87 米/秒 经度首先算相应经度位置的纬度圈长度40075.704 * cos(经度)然后方法相同&#xff0c;除…

转载通过 Docker 实现传统应用程序的现代化

长期以来&#xff0c;IT 组织将其预算的 80% 用于简单地维护现有应用程序&#xff0c;而只花费 20% 用于创新。 在过去的 10 年里&#xff0c;这一比例并没有太大改观。而同时又必须面对创新的压力。无论是直接来自客户的需求&#xff0c;要求提供新的功能&#xff0c;还是来自…

org.eclipse.jdt.internal.compiler包下的类找不到

到maven库上下载jar包&#xff1a;org.eclipse.jdt.core-3.13.jar <!-- https://mvnrepository.com/artifact/org.eclipse.jdt/org.eclipse.jdt.core --><dependency> <groupId>org.eclipse.jdt</groupId> <artifactId>org.eclipse.jdt.core<…

单元测试02:Open-Cover安装与使用

1.Open-Cover 用于测试代码是否被测试过。 1.下载open-cover与ReportGenerator 2.下载压缩包后&#xff0c;设置系统环境变量&#xff0c;如&#xff1a; D:\OpenCover D:\OpenCover\ReportGenerator2.执行 OpenCover.console -register -target:nunit3-console.exe -targ…

Blazor学习之旅 (6) 路由系统

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。许久没有更新Blazor学习系列了&#xff0c;今天续更。Blazor 的路由系统就和 ASP.NET MVC的路由系统一样&#xff0c;可以为我们提供灵活的选项&#xff0c;可用于确保用户请求到达可处理它们并返回用户想要的信息的…

kindle降级卡大树_从提示框:Kindle购物流程图,iOS降级和DIY焊接笔

kindle降级卡大树Once a week we round up some of the tips from the HTG tips box and share them with the greater readership; this week we’re looking at shopping for Kindles with a flowchart, downgrading iOS, and rolling your own DIY soldering pen. 每周一次&…

MS CRM 2011 Form与Web Resource在JScript中的相互调用

原创地址&#xff1a;http://www.cnblogs.com/jfzhu/archive/2013/02/14/2912580.html 转载请注明出处 在Form中可以添加一个html的web resource&#xff0c;在web resource里可以用JScript来使用REST Endpoint或者SOAD Endpoint。 你可以在Form中添加一个web resource&#xf…

判断字符是否在1-15之间

var str $(#name).val();//获取字符的value var reg /^\S{1,15}$/; //字符在1-15之间的正则 var flag reg.test(str); // 判断字符与正则是否匹配 if(!flag){ //提示不满足条件 }转载于:https://www.cnblogs.com/yxl-java/p/8617661.html

从 .NET 6 更新到 .NET 7

Upgrade from .NET 6 to .NET 7Intro.NET 7 已经发布了一段时间了&#xff0c;将几个服务升级到了 .NET 7&#xff0c;升级还是比较顺利的&#xff0c;也有遇到几个问题&#xff0c;分享一下TargetFramework首先我们需要将项目文件中的目标框架&#xff08;TargetFramework&…

MySQL-05:pymysql与pycharm设置

PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库&#xff0c;Python2中则使用mysqldb。 Django中也可以使用PyMySQL连接MySQL数据库。 PyMySQL安装 pip install pymysql 连接数据库 前置条件&#xff1a; 已有一个MySQL数据库&#xff0c;并且…

如何将前端数据保存到文件

有时候&#xff0c;网页上需要提供将当前页面上的数据导出为本地文件的功能&#xff0c;例如将页面上的一个表格导出为csv文件。这个功能看似简单&#xff0c;实际上却没有什么直接的方法。由于导出文件的操作&#xff08;比如浏览文件目录&#xff0c;创建本地文件等&#xff…

hdmi-cec_如何使用HDMI-CEC使用PlayStation 4或Pro自动打开电视

hdmi-cecCall it petty, but there’s just something about eliminating the “turn on the TV” portion of firing up your PlayStation 4 that makes the whole process seem faster. And the good news is that getting this action on your setup is as easy and ticking…

Microsoft POS for .NET v1.12 发布了

Microsoft POS for .NET v1.12是一个类库&#xff0c;它为你的.NET应用程序与POS设备的交互提供了一组简单统一的接口。使得供应商能够为常见的POS设备(如收银机&#xff0c;扫描仪等)轻松开发出通用的应用程序&#xff0c;您可以在此处下载.POSv1.12的更新&#xff1a;与 UPOS…

【APP接口开发】常用HTTP响应头状态码详解

1、200 OK&#xff0c;客户端请求城成功 2、400 Bad Request &#xff0c;客服端请求语法错误&#xff0c;服务器无法理解和处理 3、401 unauthorized&#xff0c;请求未通过认证 4、403 permission forbidden &#xff0c;无权限 5、404 URI不存在&#xff0c;访问的资源不存在…

leetcode——Lowest Common Ancestor of a Binary Tree

题目 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. 思路 这一次说的是一个普通的二叉树&#xff0c;给出两个节点。求他们的最低公共父节点。回忆一下&#xff0c;当这棵二叉树是二分查找树的时候的解决方式&#xff1a; 二分…

MySQL-06:pyMySQL增删改查基本命令笔记

增 # 导入pymysql模块 import pymysql # 连接database conn pymysql.connect(host“你的数据库地址”, user“用户名”,password“密码”,database“数据库名”,charset“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor conn.cursor() sql "INSERT INTO USER1(n…

ABP Framework 7.0 RC 新增功能简介

imageABP Framework 在架构上有四大目标&#xff1a;模块化、DDD、多租户和微服务。从 7.0 更新的功能来看&#xff0c;其侧重点转向微服务场景的实现&#xff0c;比如&#xff1a;Dapr 集成、动态权限和功能、外部本地化、分布式实体缓存服务&#xff0c;都是对微服务和分布式…