flask官方模板博客实例遇到的问题

flask官方模板博客实例遇到的问题,第1张

flask官方模板博客实例遇到的问题

https://dormousehole.readthedocs.io/en/latest/tutorial/index.html

当我创建博客文章时报错

TypeError: 'builtin_function_or_method' object is not subscriptable
TypeError:“内置函数”或“方法”对象不可下标


查看文件

创建文章的代码如下

@bp.route('/create',methods=('GET','POST'))
@login_required
def create():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'INSERT INTO post (title,body,author_id)'
                'VALUES(?,?,?)',
                (title,body,g.user['id'])
            )
            db.commit()
            return redirect(url_for('blog.index'))
    return render_template('blog/create.html')
问题原因

/opt/flask-tutorial/flaskr/auth.py

@bp.before_app_request
def load_logged_in_user():
    user_id = session.get('user_id')

    if user_id is None:
        g.user = None
    else:
        g.user = get_db().execute(
            'SELECt * FROM user WHERe id = ?',(user_id,)
        ).fetchone()  #少了小括号

bp.before_app_request() 注册一个 在视图函数之前运行的函数,不论其 URL 是什么。 load_logged_in_user 检查用户 id 是否已经储存在 session 中,并从数据库中获取用户数据,然后储存在 g.user 中。 g.user 的持续时间比请求要长。 如果没有用户 id ,或者 id 不存在,那么 g.user 将会是 None 。

fetchone() 根据查询返回一个记录行。 如果查询没有结果,则返回 None 。后面还用到 fetchall() ,它返回包括所有结果的列表

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5160725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存