flask 生成批量数据ForgeryPy和分页功能(转载)

二. 分页


一. Forgerypy

如果开发中需要大量逼真数据, 可以使用此工具批量制造.

  • 工具名: ForgeryPy

  • pypi

    https://pypi.org/project/ForgeryPy3/
    https://pypi.org/project/ForgeryPy/

  • 安装

python3

pip install ForgeryPy3

python2

pip install ForgeryPy
  • 使用

python2, python3

  • 例1 生成数据的例子
\#导入模块
import forgery_py

#地理信息(城市)
city=forgery_py.address.city()
print city
#随机颜色
color=forgery_py.basic.hex_color()
print color
#时间
data=forgery_py.date.date(True)
print data
#电子邮箱
email=forgery_py.internet.email_address()
print email
#姓名
name=forgery_py.name.full_name()
print name
#公司
company=forgery_py.name.company_name()
print company
#简介
about=forgery_py.lorem_ipsum.sentence()

  • 例2 小应用
from app.models import User, Role, Post, Comment
from forgery_py import basic, lorem_ipsum, name, internet, date

@manager.command  # 生成虚拟的用户数据
def forged():
    from forgery_py import basic, lorem_ipsum, name, internet, date
    from random import randint

    db.drop_all()
    db.create_all()  # 删除数据库中的数据

    Role.seed()

    guests = Role.query.first()

    def generate_comment(func_author, func_post):  # 生成虚拟的评论
        return Comment(body=lorem_ipsum.paragraphs(),
                       created=date.date(past=True),
                       author=func_author(),
                       post=func_post())

    def generate_post(func_author):  # 生成虚拟的文章
        return Post(title=lorem_ipsum.title(),
                    body=lorem_ipsum.paragraphs(),
                    created=date.date(),
                    author=func_author())

    def generate_user():  # 生成虚拟的用户
        return User(name=internet.user_name(),
                    email=internet.email_address(),
                    password='password',
                    roles=guests)

    users = [generate_user() for i in range(0, 5)]
    db.session.add_all(users)

    random_user = lambda: users[randint(0, 4)]

    posts = [generate_post(random_user) for i in range(0, randint(50, 200))]
    db.session.add_all(posts)

    random_post = lambda: posts[randint(0, len(posts) - 1)]
    comments = [generate_comment(random_user, random_post) for i in range(0, randint(2, 100))]  # 再整点随机的评论,
    db.session.add_all(comments)  # 提交评论

    db.session.commit()  # 提交所有的数据


执行 python manage forged 即可 批量生成所需数据

二. 分页

flask 提供了分页, 在前台可以选择用bootstrap渲染, 有点丑, 但是也记录一下吧.

比如对文章列表进行分页

  1. 视图中:
@main.route('/')
def index():
    page_index = request.args.get('page', 1, type=int)
    query = Post.query.order_by(Post.created.desc())
    pagination = query.paginate(page_index, per_page=20, error_out=False)
    posts = pagination.items  #返回当前page的所有数据
    return render_template('index.html', title='欢迎来到主页', posts=posts, pagination=pagination)


  1. 模板中:
 {% for post in posts %}
            <h2><a href="{{ url_for('main.post', id = post.id) }}">{{ post.title }}</a></h2>
            <div>
                {{ post.body_html|safe }}
            </div>
        {% endfor %}

{% from "bootstrap/pagination.html" import render_pagination %}
{% if pagination %}
{{ render_pagination(pagination) }}
{% endif %}


页面上:

原文出处

猜你喜欢

转载自blog.csdn.net/weixin_35993084/article/details/80742423
今日推荐