使用 Flask 和 Peewee 进行分页
Pagination with Flask and Peewee
我正在尝试 paginate
使用 Peewee
在 Flask
中查询的结果。我正在尝试使用 playhouse.flask_utils
中的函数 object_list。
您可以看到 object_list
的示例看起来非常简单,下面的代码是我正在努力工作的代码:
from flask import Flask
from playhouse.flask_utils import object_list
from peewee import *
from database import *
@app.route("/items/")
def items():
all_items = Quote.select()
return object_list("items.html", all_items)
并且模板 items.html
包含以下内容:
<p>Hello world</p>
{% for item in all_items %}
<p>{{ item.text }}</p>
{% endfor %}
{% if page > 1 %}
<a class="previous" href="./?page={{ page - 1 }}">Previous</a>
{% endif %}
{% if pagination.get_pages() > page %}
<a class="next" href="./?page={{ page + 1 }}">Next</a>
{% endif %}
当然,我 运行 python app.py
但我收到 500 内部服务器错误。 我对查询结果的分页感兴趣,知道我怎样才能做到这一点?或者你能发现我在这里做错了什么吗?先感谢您。
编辑#1,终端出现如下错误:
127.0.0.1 - - [09/Jan/2016 20:47:17] "GET /items/ HTTP/1.1" 500 -
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/web/index.py", line 19, in items
return object_list("items.html", all_items)
File "/usr/lib/python2.7/site-packages/playhouse/flask_utils.py", line 64, in object_list
**kwargs)
File "/usr/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
context, ctx.app)
File "/usr/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
rv = template.render(context)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 989, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 754, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/web/templates/items.html", line 9, in top-level template code
{% if pagination.get_pages() > page %}
UndefinedError: 'playhouse.flask_utils.PaginatedQuery object' has no attribute 'get_pages'
没有get_pages()
方法。使用:get_page(x)
获取一页结果。使用get_page_count()
获取总页数。
这里记录了所有内容:http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#PaginatedQuery
我正在尝试 paginate
使用 Peewee
在 Flask
中查询的结果。我正在尝试使用 playhouse.flask_utils
中的函数 object_list。
您可以看到 object_list
的示例看起来非常简单,下面的代码是我正在努力工作的代码:
from flask import Flask
from playhouse.flask_utils import object_list
from peewee import *
from database import *
@app.route("/items/")
def items():
all_items = Quote.select()
return object_list("items.html", all_items)
并且模板 items.html
包含以下内容:
<p>Hello world</p>
{% for item in all_items %}
<p>{{ item.text }}</p>
{% endfor %}
{% if page > 1 %}
<a class="previous" href="./?page={{ page - 1 }}">Previous</a>
{% endif %}
{% if pagination.get_pages() > page %}
<a class="next" href="./?page={{ page + 1 }}">Next</a>
{% endif %}
当然,我 运行 python app.py
但我收到 500 内部服务器错误。 我对查询结果的分页感兴趣,知道我怎样才能做到这一点?或者你能发现我在这里做错了什么吗?先感谢您。
编辑#1,终端出现如下错误:
127.0.0.1 - - [09/Jan/2016 20:47:17] "GET /items/ HTTP/1.1" 500 -
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/web/index.py", line 19, in items
return object_list("items.html", all_items)
File "/usr/lib/python2.7/site-packages/playhouse/flask_utils.py", line 64, in object_list
**kwargs)
File "/usr/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
context, ctx.app)
File "/usr/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
rv = template.render(context)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 989, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 754, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/web/templates/items.html", line 9, in top-level template code
{% if pagination.get_pages() > page %}
UndefinedError: 'playhouse.flask_utils.PaginatedQuery object' has no attribute 'get_pages'
没有get_pages()
方法。使用:get_page(x)
获取一页结果。使用get_page_count()
获取总页数。
这里记录了所有内容:http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#PaginatedQuery