第六课 Flask用户注册数据加密手机邮箱激活和内置对象

第六课 Flask用户注册数据加密手机邮箱激活和内置对象

tags:

  • Flask
  • 2019千锋教育

categories:

  • flask
  • 钩子函数
  • 内置对象q和Config
  • 用户注册数据加密
  • 邮箱发送
  • 手机激活

第一节 钩子函数

1.1 钩子函数介绍

  1. 钩子函数面向切面编程,动态介入请求流程。
  2. 请求钩子(相当于中间件)
    • before first request
    • before request
    • after reguest
    • teardown request 请求关闭
  3. 可以使用蓝图的,也可以直接使用app的。
# views.py
# 统计、做反扒、优先级、频率反扒、用户登录的判断
from flask import request
@blue.before_request
def before():
    print(request.url)
    
# 界面统一的动态加载、DebugToBar
@blue.after_request
def after(res):
    print("after", res)
    print(type(res))
    return res

1.2 Django面试题:# Djangs请求流程

  1. 普通回答(连60都不能给你呀兄弟)
    • urls -> views
    • views -> models
    • models -> views
    • views -> response
  2. 添加中间件回答
    • client -> process_ request [ ] (逐一得进行便利process_ request)
    • 逐一进行process_ request
    • process_request -> urls
    • urls -> process view
    • 逐一进行pprocess view
    • process view -> views
    • views -> models
    • models -> views
    • views -> response
    • response -> process response []
    • 逐一进行pprocess response

1.3 把它写成中间件

  1. 创建middleware.py文件。
from flask import request


def load_middleware(app):
    """
    统计
    优先级
    反爬
    频率
    用户认证
    用户权限
    """
    @app.before_request
    def before():
        print("中间件", request.url)

    @app.after_request
    def after(res):
        # 一定要有返回
        print("after", res)
        print(type(res))
        return res
  1. 改__init__.py文件
from flask import Flask
from App.views import blue
from App.ext import init_ext
from App.settings import envs
from App.middleware import load_middleware


def create_app(env):
    app = Flask(__name__)
    app.register_blueprint(blue)
    app.config.from_object(envs.get(env))
    init_ext(app=app)
    load_middleware(app=app)
    return app

1.4 四大内置对象(g和Config(又称app))

  1. cookie和session已经在前面讲过了。
  2. g 可以用来跨函数传递数据的。
  3. 无论哪种服务器,为每个用户的请求创建一个线程(内部维护一个线程池)。变量数据是隔离开的。
@blue.before_request
def before():
	g.msg = "hhd"
    print(request.url)

@blue.after_request
def after(res):
	print(g.msg)
    return g.msg
  1. config. 它实际上是我们的App的配置信息
<ul>
{% for con in config %}
	<li>{
  { con }}={
  { config|con] }}</li>
{% endfor%}
</ul>
from flask import request
from flask import current_app
# 这里直接导入的config, 并不是四大内置对象的config.
# 从flask 中导入 request
@blue.before_request
def before():
    conf = current_app.config
    keys = conf.keys()
    for key in keys:
        print(key, conf[key])
    print(request.url)

第二节 注册登录-数据加密

2.1 注册登录基础设计

  1. 前端的加密是为了数据传输安全,后台加密为了防家贼(后台开发人员)。
  2. 注册登录基础设计如下。
# models.py
from werkzeug.security import check_password_hash


class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(15), unique=True)
    s_password = db.Column(db.String(256))

    def check_password(self, password):
        return check_password_hash(self.s_password, password)
# views.py
@blue.route('/student/register/', methods=['GET', 'POST'])
def student_register():
    if request.method == "GET":
        return render_template("student_register.html")

    if request.method == "POST":
        username = request.form.get("username")
        password = request.form.get("password")
        hash_pwd = generate_password_hash(password)
        student = Student()
        student.s_name = username
        student.s_password = hash_pwd
        db.session.add(student)
        db.session.commit()
        return "注册成功"


@blue.route('/student/login/', methods
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值