Flask中'keyword argument repeated'错误排查(分页功能开发)
解决Jinja2模板中的"keyword argument repeated"错误
你遇到的这个错误原因非常明确——在Jinja2模板的分页循环代码里,重复传递了同一个关键字参数。
看你模板里的这行代码:
{% for page_num in blog_posts.iter_pages(left_edge=1, right_current=1, right_current=2) %}
这里连续写了两次right_current参数,一次设为1,一次设为2,Jinja2解析模板时会识别到重复的关键字参数,直接抛出SyntaxError: keyword argument repeated。(错误栈显示的行号和实际行号有偏差,大概率是模板继承后渲染的总行数导致的,不用纠结这个细节)
修正方案
把重复的参数去掉,根据你的分页需求保留正确的参数配置。iter_pages的常用参数是left_edge(最左侧显示的页码数)、left_current(当前页左侧显示的页码数)、right_current(当前页右侧显示的页码数)、right_edge(最右侧显示的页码数)。
假设你想要的是「最左侧显示1个页码,当前页右侧显示2个页码」,修正后的代码应该是:
{% for page_num in blog_posts.iter_pages(left_edge=1, right_current=2) %}
如果需要更精细的控制,比如「最左侧1个、当前页左侧1个、当前页右侧2个」,可以写成:
{% for page_num in blog_posts.iter_pages(left_edge=1, left_current=1, right_current=2) %}
额外小提示
模板里还有一处潜在的小笔误,建议一并检查:
<a href="{{url_for('blog_posts.blog_posts', blog_posts_id=post.id)}}">{{post.title}}</a>
这里的端点名称blog_posts.blog_posts看起来重复了,大概率应该是blog_posts.blog_post(对应单个文章的路由),虽然这不是当前报错的原因,但可能会导致后续点击文章标题时出现404错误。
内容的提问来源于stack exchange,提问作者Tapajyoti Bose
相关产品推荐
相关产品推荐

