Flask第三方模块部分汇总

1.Flask配置文件之from_object篇

app = Flask(__name__)
app.config.from_object(Flask.config[config_name])
Flask.config[config_name].init_app(app)

#app是通过Flask创建的,app的config方法肯定是从Flask类里面获得的
查看原码可以发现app的config属性的定义
self.config=self.make_config(instance_relative_config)

make_config(instance_relative_config)这个函数定义的内容
def make_config(self,instance_relative=False):
    return self.config_class(root_path,self.default_config)
#最终返回的是一个config_class方法,它是一个类对象,这个类对象是从Config类而来。

#这种方式的效果是直接从文件中加载对项目的配置

2.flask第三方扩展之Moment模块

Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化、日期解析等功能。
它支持在浏览器和NodeJS两种环境中运行。此类库能够 将给定的任意日期转换成多种不同的格式,具有
强大的日期计算功能,同时也内置了能显示多样的日期形式的函数。另外,它也支持多种语言,你可以
任意新增一种 新的语言包。
#首先初始化Flask-Moment
from flask.ext.moment import Moment
moment = Moment(app)

在base.html模板种的head标签中导入moment.js,jquery.js
<html>
    <head>

        {
   { moment.include_jquery() }}
        {
   { moment.include_moment() }}

        <!--使用中文,默认是英语的-->
     {
   { moment.lang("zh-CN") }} 
     
</head> <body> ... </body> </html>
使用Flask-moment

from flask import render_template
from datetime import date
@main.route('/')
def index ():
    return render_template('index.html', time = date(1994,8,29))
#在模板中渲染
<p>现在时间时: {
   { moment().format('YYYYMD日, h:mm:ss a') }}.</p>
<p>已经过去了: {
   { moment().fromTime(time) }}.</p>
<p>{
   { moment().calendar() }}.</p>

结果:

现在时间时: 2015年4月22日, 10:06:33 上午.

已经过去了: 21年内.

今天上午10点06.

3.flask扩展之flask_login模块

这里将详细讲述flask_login模块的使用流程和机制

1.使用前首先要配置和初始化

from flask_login import LoginManager
login_manage=LoginManager()

def init_ext(app):
    login_manage.init_app(app)
   #这里要指定登陆函数的端口,以方便login跟踪操作
    login_manage.login_view='main.login'
    这个配置的是当给视图加@login_required的时候非登陆用户操作出现的message
    login_manage.login_message='需要登陆才能执行此操作'
    login_manage.login_message_category='info'
    #设置对session的保护等级
    login_manage.session_protection='strong'

2.配置完成后,我们要在模型中实现一个继承和回调

from flask_login import UserMixin
from App.extensions import login_manage

#如果不继承UserMixin是无法满足使用flask_login的条件的
class User(db.Model,UserMixin):
    __tablename__='user'
    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(10),unique=True)
    password=db.Column(db.String(128))
    sex=db.Column(db.Boolean,default=1)
    email=db.Column(db.String(100),unique=True)

#这个回调是用来接收一个用户id的时候返回一个用户对象
#如果没有会返回None但是不会报错
@login_manage.user_loader
def load_user(uid):
    return User.query.get(int(uid))

3.好了,基本配置已经完成了,现在我们来看看flask_login怎么使用

#蓝本(视图函数)当中
from flask_login import current_user,login_user,logout_user,login_required

main=Blueprint('main',__name__)
@main.route('/login/',methods=['GET','POST'])
def login():
    form=Login()
    if form.validate_on_submit():
        u = User.query.filter(User.username==form.username.data).first()
        if not u:
            return '用户不存在'
        elif not u.password==form.password.data:
            return '密码输入有误'
        #直接通过此方法可以实现用户的登入,其实就是将用户的id存到session当中
        login_user(u)
        #如果需要实现记住我,请在form表单里添加相关字段
        return render_template('success.html')
    return render_template('login.html',form=form)

@main.route('/logout/',methods=['GET','POST'])
def logout():
    #此函数的作用是实现用户的登出,其实就是从session中删除用户的id
    logout_user()
    return  redirect(url_for('main.main_s'))

@main.route('/picture/')
#此装饰器限制的是一些只有登陆才能进行的操作,如果没有登陆,会重定向到用户登陆页面
#同时将提示信息存入flash当中
@login_required
def picture():
    return render_template('picture.html')
picture.html中
#如果是非登陆用户执行越权限操作被传送过来,想显示相关flash内容
#这里是从消息中取出对应flash
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值