Flask短链接应用访问次数统计方法及AttributeError报错解决
Flask短链接访问次数统计及报错修复
错误原因
你写的代码逻辑顺序有误——先执行了link.access_counter+=1更新操作,再判断link是否存在。当用户输入的short_id无效时,ShortUrls.query.filter_by(...).first()会返回None,此时调用link.access_counter必然触发AttributeError: 'NoneType' object has no attribute 'access_counter'。
修复后的代码
调整逻辑顺序,先判断链接是否存在,仅当存在时再更新访问计数器:
@app.route('/<short_id>') def redirect_url(short_id): link = ShortUrls.query.filter_by(short_id=short_id).first() if link: # 链接有效时更新访问次数 link.access_counter += 1 db.session.commit() return redirect(link.original_url) else: flash('Invalid URL') return redirect(url_for('index'))
额外注意事项
- 确保你的
ShortUrls模型已正确定义access_counter字段,并设置默认值避免初始值为None:class ShortUrls(db.Model): # 其他字段定义... access_counter = db.Column(db.Integer, default=0, nullable=False) - 如果数据库表已提前创建,需要通过Flask-Migrate等迁移工具添加该字段,或手动修改数据库表结构。
内容的提问来源于stack exchange,提问作者Zura Begadze
相关产品推荐
相关产品推荐

