Flask-入门-day96

Flask优势:  1.节省资源 轻量级框架    2.开发简便 速度快
Flask劣势:组件极少 Session   - 第三方组件 非常全 Flask-Session - Flask 更新 组件第三方的 稳定性相对较差

Flask常用模块

from flask import Flask,render_template,redirect,jsonify,send_file

 

 

Flask模块的使用及功能

jsonify

详解:只有用jsonify返回的数据才是json格式的数据类型

from flask import Flask, jsonify, send_file

@app.route("/get_data1")
def get_data1():
    return jsonify({"name":"Alexander.DSB.Li"})

 

 

send_file

详解:服务器上的数据发送给用户,可以是任何类型的数据,如果浏览器不支持的文件用户默认会下载

@app.route("/get_file")
def get_file():
    return send_file("2.mp3")

app.run()

 

 

 

request

详解:获取用户提交的数据

1.args 保存URL中传递的参数数据 to_dict() 字典形式取值
2.form 保存FormData中的数据 to_dict() 字典形式取值
3.method 判断请求方式
4.*path 路由地址
5.*url 访问地址
6.*host 主机地址
7.*host_url 主机访问地址
8.files 保存所有数据中的文件数据
9.**values 保存 URL + FormData 坑!
10.data b""请求体中的原始数据 Content-Type != form-data
11.json # None Content-Type:application/json -> dict()

from flask import Flask,request,render_template
app = Flask(__name__)
app.config['DEBUG'] = True

@app.route('/data',methods=['POST','GET'])  #methods 限制用户的请求方式
def url_data():
    if request.method == 'GET':
        return render_template('form.html')
    else:
        print(request.form.to_dict())   
        return '200 ok'


if __name__ == '__main__':
    app.run()

 

 

files的详细用法:

#!/usr/bin/env python
from flask import Flask,request,render_template
app = Flask(__name__)
app.config['DEBUG'] = True

@app.route('/data',methods=['POST','GET'])  #methods 限制用户的请求方式
def url_data():
    if request.method == 'GET':
        return render_template('form.html')
    else:
        print(request.form.to_dict())
        my_file = request.files.get('file')
        my_file.save(my_file.filename)      #不改变接收的文件名称和格式
        #my_file.save('tupian.jpg')  #更改接收的文件的名称及格式
        return '200 ok'


if __name__ == '__main__':
    app.run()
files的详细用法

 

 session

 详解:会话

 

使用方法:

在使用session之前必须有'secret_key'

app.secret_key = "~!@#$%^&*()!@#$%^&*(~!@#$%^&*(!@#$%^&*~!@#$%^&*("

session.get(key)   #获取key
session.pop(key)   #删除key
del session[key]    #删除key
session.clear()       #删除session中所有的值

设置session的有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置`app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)`在两个小时后过期。

 

 

 

基于session的装饰器做登录校验:

from flask import Flask, session, render_template, request, redirect

app = Flask(__name__)
#app.config["DEBUG"] = True
app.secret_key = "~!@#$%^&*()!@#$%^&*(~!@#$%^&*(!@#$%^&*~!@#$%^&*("


STUDENT_DICT = {
    1: {'name': 'Old', 'age': 38, 'gender': ''},
    2: {'name': 'Boy', 'age': 73, 'gender': ''},
    3: {'name': 'EDU', 'age': 84, 'gender': ''},
}

def wrapper(func):
    def inner(*args,**kwargs):
        if session.get('username'):
            ret = func(*args,**kwargs)
            return ret
        else:
            return redirect('/login')
    return inner


@app.route('/index')
@wrapper
def index():   #主页
    return render_template('s_student.html',stu = STUDENT_DICT)

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'POST':
        session["username"] = request.form.get('username')
        return redirect('/index')
    else:
        return render_template('s_login.html')


@app.route('/detail',endpoint='detail')
@wrapper
def detail():
    id = int(request.args.get('id'))
    stu_info = STUDENT_DICT[id]
    return render_template('detail.html',stu_info = stu_info)


if __name__ == '__main__':
    app.run()
基于session的装饰器做登录校验
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ stu_info }}
</body>
</html>
detail.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ stu_info }}
</body>
</html>
s_login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ stu_info }}
</body>
</html>
s_tudent.html

 

转载于:https://www.cnblogs.com/yanpeizhang/p/10962831.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask-Security是一个基于 Flask 的安全扩展,可以帮助你快速实现常见的用户认证和授权功能。下面是一个快速入门指南: 1. 安装 Flask-Security 使用 pip 安装 Flask-Security: ``` pip install flask-security ``` 2. 初始化 Flask-Security 在 Flask 应用中初始化 Flask-Security: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_security import Security, SQLAlchemyUserDatastore app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///myapp.db' app.config['SECRET_KEY'] = 'super-secret' db = SQLAlchemy(app) from myapp.models import User, Role user_datastore = SQLAlchemyUserDatastore(db, User, Role) security = Security(app, user_datastore) ``` 在这个例子中,我们使用 SQLAlchemyUserDatastore 将 Flask-Security 和 SQLAlchemy 集成在一起,同时使用 Security 类来初始化 Flask-Security。 3. 创建用户模型 创建一个 User 模型来存储用户信息: ```python from flask_security import UserMixin, RoleMixin class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) roles = db.relationship('Role', secondary='user_roles', backref=db.backref('users', lazy='dynamic')) class Role(db.Model, RoleMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) ``` 在这里,我们使用 UserMixin 和 RoleMixin 来添加一些常见的用户和角色属性。 4. 创建用户和角色关系模型 创建一个 user_roles 表来存储用户和角色之间的关系: ```python user_roles = db.Table('user_roles', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) ``` 5. 配置 Flask-Security 在 Flask 应用中配置 Flask-Security: ```python app.config['SECURITY_PASSWORD_SALT'] = 'super-secret-salt' app.config['SECURITY_REGISTERABLE'] = True app.config['SECURITY_SEND_REGISTER_EMAIL'] = False app.config['SECURITY_USER_IDENTITY_ATTRIBUTES'] = ['email'] ``` 在这个例子中,我们为密码添加了一个盐值,启用了用户注册功能,并且关闭了注册时发送电子邮件的功能。 6. 添加用户认证和授权路由 添加用户认证和授权路由到 Flask 应用中: ```python from flask import render_template, redirect, url_for from flask_security import login_required, current_user @app.route('/') def home(): return render_template('home.html') @app.route('/dashboard') @login_required def dashboard(): return render_template('dashboard.html', user=current_user) ``` 在这里,我们使用 login_required 装饰器来保护 dashboard 路由,只有已登录用户才能访问该路由。 7. 创建模板 创建一个 home.html 模板来显示主页: ```html <h1>Welcome to My App</h1> {% if current_user.is_authenticated() %} <p>Hello {{ current_user.email }}!</p> <p><a href="{{ url_for('security.logout') }}">Logout</a></p> {% else %} <p><a href="{{ url_for('security.login') }}">Login</a></p> {% endif %} ``` 创建一个 dashboard.html 模板来显示仪表盘: ```html <h1>Dashboard</h1> <p>Hello {{ user.email }}!</p> <p><a href="{{ url_for('security.logout') }}">Logout</a></p> ``` 在这里,我们使用 current_user 对象来检查当前用户是否已经登录,并使用 url_for 方法来生成登出链接。 这就是 Flask-Security 的快速入门指南。有了这个基础,你可以探索 Flask-Security 的更多功能,例如密码重置、电子邮件确认、角色管理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值