You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask分页开发遇AttributeError:'function'对象无'args'属性

问题修复方案

核心错误原因

触发AttributeError的直接原因有两个:

  • request.args.get是Flask提供的方法,必须用括号()调用,你错误使用了方括号[],导致Python将get当作函数的属性访问,从而抛出错误。
  • 检查page参数是否存在的写法冗余,request.args是特殊的字典类型,直接用get方法设置默认值更简洁高效。

修正后的关键代码

将分页相关代码替换为以下内容:

# 从数据库结果中提取图片URL(需根据sheet1表的实际结构调整索引,比如图片URL在第2列就用row[1])
image_urls = [row[1] for row in rows]

# 处理分页逻辑
page = request.args.get(get_page_parameter(), type=int, default=1)
per_page = 12
offset = (page - 1) * per_page
current_page_urls = image_urls[offset:offset+per_page]
pagination = Pagination(page=page, per_page=per_page, total=len(image_urls), css_framework='bootstrap4')

其他潜在问题修复

  • 原代码中image_urls未定义就直接使用,会触发NameError,必须先从rows中提取对应字段。
  • 你导入了get_page_parameter但未使用,用它可以统一分页参数名,避免硬编码'page'。
  • 全局数据库连接和游标可能因长时间保持连接导致超时,建议在视图函数内创建并关闭连接。

完整修正后的视图函数示例

@app.route('/')
def thumbnails():
    # 在视图内创建数据库连接,避免全局连接超时
    db = mysql.connector.connect(user=app.config['MYSQL_USER'], password=app.config['MYSQL_PASSWORD'],
                                 host=app.config['MYSQL_HOST'], database=app.config['MYSQL_DB'])
    cursor = db.cursor()
    
    # 从数据库获取数据
    cursor.execute('SELECT * FROM sheet1')
    rows = cursor.fetchall()
    cursor.close()
    db.close()
    
    # 提取图片URL(根据表结构调整索引)
    image_urls = [row[1] for row in rows]
    
    # 分页处理
    page = request.args.get(get_page_parameter(), type=int, default=1)
    per_page = 12
    offset = (page - 1) * per_page
    current_page_urls = image_urls[offset:offset+per_page]
    pagination = Pagination(page=page, per_page=per_page, total=len(image_urls), css_framework='bootstrap4')
    
    # 传递数据到模板
    return render_template('index.html', rows=rows, current_images=current_page_urls, pagination=pagination)

内容的提问来源于stack exchange,提问作者Rohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:45:18