1.With上下文管理器

常用:

with open("file_name","wb") as f:
f.write("hello flask")

自定义:

class Foo(gbiect):
def __enter__(self):
"""进入with语句的时候被with调用"""
print("enter called")
def __exit_(self, exc_type, exc_val, exc_tb):
"""离开with语句的时候被with调用"""
print("exit called")
print("exc_type:%s" % exc_type)
print("exc_val:9%s" % exc_val)
print("exc_tb:%s"%exc_tb) with Foo() as foo:
print("helto python")
a=1/0
print("hello end")

运行结果:

 enter called
  Traceback (most recent call last):
  hello python
File"/Users/delron/Desktop/code/03 with. py", line 39, in <module>
  exit called
   a=1/0
  ZeroDivisionError: integer division or modulo by zero
  exc_type:<type ' exceptions. ZeroDivisionError'>
  exc_val: integer division or modulo by zero
  exc_tb:<traceback object at 0x1097bc440>
  Process finished with exit code 1

2. Json模块

dumps —> 可以将字典转换为字符串

    import json

    a = '{"city": "sz", "country": "china"}'

    b = json.loads(a)

    print(type(b), b)

  运行结果:

    dict {"city": "sz", "country": "china"}

3. xss攻击

  当前段传送过来的数据默认进行转义,否则,则会默认执行前端传送的数据,则称为xss攻击

4. flask 和mysql

 Linux:

  flask使用mysql数据库需要:

    1、pymysql

    2、sqlalchemy

    3、flask_sqlalchemy

  windows:

    Flask利用pymysql出现Warning:1366的解决办法

    flask使用mysql数据库需要:

mysql-connector-python

sqlalchemy

flask_sqlalchemy

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:mysql@localhost/ihome01"

5. 装饰器

  @app.route("/")

  def index():

   return "index page"
  def index():
return "index page"
  app.route("/)(index)
装饰器不仅仅是定义时可以用,还可以在定义完再使用

6. 自定义正则转换器及蓝图

from werkzeug.routing import BaseConverter

定义正则转换器

class ReConverter(BaseConverter):

def __init__(self, url_map, regex):
# 调用父类初始化方法
super(ReConverter, self).__init__(url_map)
# 重新赋值
self.regex = regex

添加自定义的转换器

 app.url_map.converters["re"] = ReConverter
from flask import Blueprint, current_app html = Blueprint("web_html", __name__) @html.route("/<re(r'.*'):file_name>")
def web_html(file_name):
if not file_name:
file_name = "index.html"
if file_name != "favicon.ico":
file_name = "html/" + file_name
return current_app.send_static_file(file_name)

注册蓝图

  • app.register_blueprint(html)

7. 登录装饰器

定义验证登录状态 的装饰器

def login_required(view_func):
# wraps函数的作用是将wrapper内层函数的属性设置为被装饰函数view_func的属性
@functools.wraps(view_func)
def wrapper(*args, **kwargs):
# 判断用户登录状态
user_id = session.get("user_id")
# 如果用户是登录状态,则执行登录状态
if user_id is not None:
# 将user_id保存到g对象中,在视图函数中,可以通过g对象获取保存数据
g.user_id = user_id
return view_func(*args, **kwargs)
# 如果未登录,则返回未登录信息
else:
return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")
return wrapper

8. 视图函数

  • 路由匹配不能出现相同的地址,即同一地址,不能出现两个视图函数

  • 路由匹配不能出现不同的函数,即不同的地址,不能出现相同的函数名

9. 参数获取

  • 直接从request中获取json数据,并将其转换为字典

    house_data = request.get_json()

  • 从request中获取文件

    image_file = request.files.get("house_image")

  • 从request中的form表单中获取键值对

    house_id = request.form.get("house_id")

10. 数据库操作

  在同一视图函数中,可以对对象多次修改,只提交一次即可

 db.session.add(house_image)
db.session.add(house)
try:
db.session.commit()
except Exception as e:
current_app.logger.error(e)
db.session.rollback()

Flask 易错点的更多相关文章

  1. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  2. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  3. Java五道输出易错题解析(避免小错误)

    收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注意下就OK了. 1. 看不见的空格? 下面的输出会正常吗? package basic; public class Integ ...

  4. 细节!重点!易错点!--面试java基础篇(二)

    今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...

  5. 细节!重点!易错点!--面试java基础篇(一)

    今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在ma ...

  6. [SQLXML]FOR XML语法导出XML的易错之处

    原文:[SQLXML]FOR XML语法导出XML的易错之处 [SQLXML]FOR XML语法导出XML的易错之处 Version Date Creator Description 1.0.0.1 ...

  7. JavaScript易错点转载

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  8. PHP数据访问易错点(20161030)

    易错点: 1.造对象的时候括号里面的参数 写错了 $db = new MySQLi("localhost","root","789",&qu ...

  9. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)

    本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...

随机推荐

  1. Shell中常用的语句

    exit 完全中断脚本的执行 break 中断脚本的循环,但是会执行循环外的语句 continue 跳出本次循环,进行下一次循环 进一步了解三者的区别,有如下实验: 执行该脚本: 脚本正常运行情况: ...

  2. Python网络爬虫——京东商城商品列表

    Python_网络爬虫--京东商城商品列表 最近在拓展自己知识面,想学习一下其他的编程语言,处于多方的考虑最终选择了Python,Python从发布之初就以庞大的用户集群占据了编程的一席之地,pyth ...

  3. HTB Hack The Box -- Oopsiec

    信息收集 开放了22ssh,80端口,其中ssh有弱口令爆破端口 先打开网页,然后进行目录爆破,在这期间先看一下网页的大概信息 没爆到什么有用的东西,但是有uploads文件夹说明是不是说明有文件上传 ...

  4. 20210715 noip16

    考场 乍一看 T1 像是二分答案,手玩样例发现可以 \(O(k^2)\) 枚举点对,贪心地更新答案,完了?有点不信,先跳了 T2 的形式有点像逆序对,但没啥想法 T3 的式子完全不知道如何处理,一看就 ...

  5. freemodbus移植、实例及其测试方法

    Modbus简介 参考:Modbus​协议​深入​讲解 https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol ...

  6. 数据结构(c++)(第二版) Dijkstra最短路径算法 教学示范代码出现重大问题!

    前言 去年在数据结构(c++)的Dijkstra教学算法案例中,发现了一个 bug 导致算法不能正常的运行,出错代码只是4行的for循环迭代代码. 看到那里就觉得有问题,但书中只给了关键代码的部分,其 ...

  7. PHP设计模式之原型模式

    原型模式其实更形象的来说应该叫克隆模式.它主要的行为是对对象进行克隆,但是又把被克隆的对象称之为最初的原型,于是,这个模式就这样被命名了.说真的,从使用方式来看真的感觉叫克隆模式更贴切一些. Gof类 ...

  8. TP5 pc和wap跳转404

    在config.php中配置 // HttpException异常 'http_exception_template' => [ // 定义404错误的重定向页面地址 404 => isW ...

  9. 哪5种IO模型?什么是select/poll/epoll?同步异步阻塞非阻塞有啥区别?全在这讲明白了!

    系统中有哪5种IO模型?什么是 select/poll/epoll?同步异步阻塞非阻塞有啥区别? 本文地址http://yangjianyong.cn/?p=84转载无需经过作者本人授权 先解开第一个 ...

  10. DS博客作业03--树

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业03--树 这个作业的目标 学习树结构设计及运算操作 姓名 黄静 目录 0. PTA得分截图 1. 本周学习总结 ...