加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

1.With上下文管理器

发布时间:2022-10-31 17:02:29 所属栏目:MySql教程 来源:网络
导读: 1.With上下文管理器
常用:
with open("file_name","wb") as f:
f.write("hello flask")

自定义:
class Foo(gbiect):
def __enter__(self):
"""进入with语句的时候被wit

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
  exit called
       a=1/0
  ZeroDivisionError: integer division or modulo by zero
  exc_type:
  exc_val: integer division or modulo by zero
  exc_tb:
  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("/")
  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)

注册蓝图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. 参数获取

house_data = request.get_json()

image_file = request.files.get(“house_image”)

house_id = request.form.get(“house_id”)

10. 数据库操作

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

 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()

Original:

Author: 小高、

Title: Flask 易错点

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!