美文网首页
Flask Web 开发第二版的更新

Flask Web 开发第二版的更新

作者: Dozing | 来源:发表于2019-07-11 01:00 被阅读0次

《Flask Web 开发》中比较大的更新就是用Flask Shell来替代了Flask-Script这个插件。原来用来启动网站服务器的命令也有所改变了
以windows powershell为例:

  1. 启动服务器有先设定环境变量
#启动服务器:
$env:FLASK_APP="Flask"
#启动调试模式:
$env:FLASK_DEBUG=1

Flask Web 开发服务器也可以通过编程的方式启动:调用 app.run() 方法。在
没有 flask 命令的旧版 Flask中,若想启动应用,要运行应用的主脚本。主
脚本的尾部包含下述代码片段:

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

2.数据库更新

flask db migrate
flask db upgrade
  1. flask shell进入shell模式
(venv) PS E:\Flask> flask shell
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] on win32
App: app [production]
Instance: E:\Flask\instance
>>> 
  1. current_user
    示例 8-10 app/templates/base.html:导航栏中的 Log In 和 Log Out 链接
<ul class="nav navbar-nav navbar-right"> 
    {% if current_user.is_authenticated %} 
    <li><a href="{{ url_for('auth.logout') }}">Log Out</a></li> 
    {% else %} 
    <li><a href="{{ url_for('auth.login') }}">Log In</a></li> 
    {% endif %} 
</ul>

判断条件中的变量 current_userFlask-Login 定义,在视图函数和模板中自动可用。这
个变量的值是当前登录的用户,如果用户未登录,则是一个匿名用户代理对象

Flask-Login要求实现的属性和方法
is_authenticated: 如果用户提供的登录凭据有效,必须返回 True,否则返回 False

  1. next = request.args.get('next')
    提交登录凭据的 POST 请求最后也做了重定
    向,不过目标 URL 有两种可能。用户访问未授权的 URL 时会显示登录表单,Flask-Login
    会把原 URL 保存在查询字符串的 next 参数中,这个参数可从 request.args 字典中读取。如果查询字符串中没有 next 参数,则重定向到首页。next 参数中的 URL 会经验证,确保是相对 URL,以防恶意用户利用这个参数,把不知情的用户重定向到其他网站。

自己理解
目标URL有两种可能
(1)没有参数,重定向回到首页
(2)访问没有授权的URL,返回原地址(当前地址)

  1. _get_current_object()
@main.route('/', methods=['GET', 'POST'])
def index():
    form = PostForm()
    if current_user.can(Permission.WRITE) and form.validate_on_submit():
        post = Post(body=form.body.data,
                    author=current_user._get_current_object())
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('.index'))
    posts = Post.query.order_by(Post.timestamp.desc()).all()
    return render_template('index.html', form=form, posts=posts)

新文章对象的author属性值为表达式current_user._get_current_object().变量current_userFlask-Login提供,和所有上下文变量一样,也是通过线程内的代理对象实现.这个对象的表现类似用户对象,但实际上却是一个轻度包装,包含真正的用户对象。数据需要真正的用户对象,因此要调用_get_current_object()方法。

7.模板中include()指令
{% include '_posts.html' %}

相关文章

  • 分享Flask电子书PDF及代码+资料

    分享flask+最新高清经典资料 Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PD...

  • Flask Web 开发第二版的更新

    《Flask Web 开发》中比较大的更新就是用Flask Shell来替代了Flask-Script这个插件。原...

  • Flask发送邮件-狗书第二版第六章

    最近在学《Flask Web开发:基于Python的Web应用开发实战》(第二版)中的第六章,遇到了一些问题,在此...

  • Flask Web 开发 -- 摘要

    前言 本文为《Flask Web开发:基于Python的Web应用开发实战》第2版 的内容摘要 摘要 第 1 章:...

  • Flask初探一(Flask 各参数的应用)

    Flask简介 Flask是什么 Flask 是一个 Python 实现的 Web 开发微框架,轻量级Web 开发...

  • Python_Flask 基础

    1 flask介绍 一个基于python实现的web开发的框架 2安装flask Pycharm 专业版新建fl...

  • python flask安装和命令

    Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架。Web框架可以...

  • Flask web开发

    注:采转归档,自己学习查询使用 Flask web开发(1):安装Flask web开发(2):程序的基本结构Fl...

  • Flaks 开发案例

    flask 是一个基于python的基础web应用开发框架。利用flask可以快速的开发web应用,便携易上手。 ...

  • Flask

    Flask介绍 Flask是一个轻量级的web开发框架, 使用Python开发, 上手简单 安装Flask pip...

网友评论

      本文标题:Flask Web 开发第二版的更新

      本文链接:https://www.haomeiwen.com/subject/plllkctx.html