Python 冻结瓶分页链接不';不要加载新页面
我试图用冻结的Flask冻结我的Flask博客应用程序,但问题是冻结()后我无法使分页正常工作 我正在使用应用程序工厂模式。 以下是我的main.routes.py:Python 冻结瓶分页链接不';不要加载新页面,python,html,flask,pagination,jinja2,Python,Html,Flask,Pagination,Jinja2,我试图用冻结的Flask冻结我的Flask博客应用程序,但问题是冻结()后我无法使分页正常工作 我正在使用应用程序工厂模式。 以下是我的main.routes.py: @bp.route(“/home”) @bp.route(“/index”) @bp.route(“/”) def索引(form=None,methods=['GET','POST']): 最新职位=加载最新职位(10) 使用db_会话(autocommit=False): 页码=1 posts=加载所有posts()。分页(第
@bp.route(“/home”)
@bp.route(“/index”)
@bp.route(“/”)
def索引(form=None,methods=['GET','POST']):
最新职位=加载最新职位(10)
使用db_会话(autocommit=False):
页码=1
posts=加载所有posts()。分页(第10页,错误)
next\u url=url\u for('main.index',page=posts.next\u num)\
如果posts.has_next-else无
prev\u url=url\u for('main.index',page=posts.prev\u num)\
如果posts.has_prev else无
如果当前用户为匿名用户:
返回呈现模板('main/index.html',title='Home',posts=posts,
上一个url=上一个url,下一个url=下一个url,最近的帖子=最近的帖子)
load\u all\u posts()
执行命令,返回Post.query.order\u by(Post.pub\u date.desc())
load\u latest\u posts(n)
基本相同,但获取最新的(n)
posts
如您所见,我正在将pagination
对象传递给posts
,我在main/index.html
模板中使用它来呈现分页项目:
{%extends'base.html%}
{%block posts\u preview%}
{posts.items%}
{%include'posts/_post.html%}
{%endfor%}
{%endblock posts_preview%}
{%block footer%}
{%if prev_url%}
{%endif%}
{posts.iter_页面中的页数为%(左_边=1,右_边=1,左_边=2,右_边=3)%}
{%if page_num%}
{%if posts.page==page_num%}
{%else%}
{%endif%}
{%else%}
...
{%endif%}
{%endfor%}
{%if next_url%}
{%endif%}
{%endblock footer%}
\u post.html
不是什么新奇的东西,只是另一个包含post结构的模板
如果我在烧瓶里运行这个,它会正常工作。当使用冻结烧瓶生成静态站点时,页码在那里,但单击它们不会将我重定向到任何地方。我看到URL正在从http://127.0.0.1:5000/
至http://127.0.0.1:5000/?page=2
但新内容不会加载,只会刷新当前页面
这里可能有什么问题?如何正确加载页面和分页?根据:
从URL中删除查询字符串以生成文件名。例如
/lorem/?page=ipsum
保存到lorem/index.html
。仅限于
不同的查询字符串被认为是相同的,并且
应该返回相同的响应。否则,行为是未定义的
这意味着,不幸的是,http://127.0.0.1:5000/
和http://127.0.0.1:5000/?page=2
将引用完全相同的页面。要使分页正常工作,您需要确保页码是查询字符串之前URL的一部分,类似于http://127.0.0.1:5000/page2/
根据:
从URL中删除查询字符串以生成文件名。例如
/lorem/?page=ipsum
保存到lorem/index.html
。仅限于
不同的查询字符串被认为是相同的,并且
应该返回相同的响应。否则,行为是未定义的
这意味着,不幸的是,
http://127.0.0.1:5000/
和http://127.0.0.1:5000/?page=2
将引用完全相同的页面。要使分页正常工作,您需要确保页码是查询字符串之前URL的一部分,类似于http://127.0.0.1:5000/page2/
能否请您详细说明,我如何将分页链接更改为http://127.0.0.1:5000/page2/
?提前谢谢!我找到了一种从页面URL中删除查询字符串的方法:我将main.routes.py>main route编辑为@bp.route('/index/',methods=['GET',POST'])
,并使用def index(page=1)传递默认页码:
(否则它在索引上会失败)。这个解决方案对我有效。所以我将此标记为答案。请您详细说明,我如何将分页链接更改为http://127.0.0.1:5000/page2/
?提前谢谢!我找到了一种从页面URL中删除查询字符串的方法:我将main.routes.py>main route编辑为@bp.route('/index/',methods=['GET',POST'])
,并使用def index(page=1)传递默认页码:
(否则它在索引上会失败)。这个解决方案对我有效。所以我把这个标记为答案。