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() ,它返回包括所有结果的列表
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)