Flask-- (四) Flask请求和会话

1、Flask请求

数据库创建之后,我们能把需要的数据查询出来,渲染到页面,但这种查询方式死板,缺乏灵活性,并不能实现数据和页面的交互。

实现页面和数据交互方式有两种:通过路由提交请求、向数据库提交请求

1.1 通过路由提交请求

获取路由上的参数来查询相应的数据

案例:根据路由传入的职位id来查询各个部门的员工信息

# 查询数据
@app.route("/book/<int:id>/")
def book_fun(id):
    color = [
        '#9cc3e5',
        '#f4b183',
        '#a8d08d'
    ]
    job = Job.query.get(id)  # 获得指定id的职业
    person_list = job.job_person_map  # 查询指定职位的所有员工
    return render_template("book.html", **locals())
<!--前端渲染-->
{% block content %}
    <a href="/book/7/"><button class="btn btn-danger">财务部</button></a>
    <a href="/book/8/"><button class="btn btn-success">技术部</button></a>
    <a href="/book/9/"><button class="btn btn-info">市场部</button></a>
    <table class="table table-bordered table-hover col-md-7">
        <caption style="text-align: center; font-size: 20px; color: black;">员工信息</caption>
        <tr>
            <th>职位</th>
            <th>用户名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>绩效</th>
        </tr>
        {% for i in person_list %}
        <tr style="color:black; background:{
      {
      color[loop.index0%3]}};">
            <td>{
  { i.person_job_map.j_name }}</td>
            <td>{
  { i.username }}</td>
            <td>{
  { i.gender }}</td>
            <td>{
  { i.age }}</td>
            <td>{
  { i.score }}</td>
        </tr>
        {% endfor %}
    </table>
{% endblock %}

通过简单的路由绑定就可实现各个部门员工信息的查询

1.2 向数据库提交请求
1.2.1 表单请求

表单请求,根据用户输入的姓氏查询员工

@app.route("/book/")
def book_fun():
    color = [
        '#9cc3e5',
        '#f4b183',
        '#a8d08d'
    ]

    get_arg = request.args  # 获取表单提交的数据
    search_content = get_arg.get("keywords")  # 根据表单内input的name值,获取输入框中要搜索的内容
    r = f"{search_content}%"
    person_list = Person.query.filter(Person.nickname.like(r))
    return render_template("book.html", **locals())
<!--前端渲染-->
{% block lable %}
    员工信息
{% endblock %}

{% block content %}
    <div class="col-md-10">
        <form class="form form-horizontal">
            <div class="form-inline">
                <input class="form-control" type="text" name="keywords" placeholder="请输入要查询的内容">
                <span>
                    <button class="btn btn-primary">搜索</button>
                </span>
            </div>
        </form>
    </div>
    <table class="table table-bordered table-hover col-md-7">
        <caption style="text-align: center; font-size: 20px; color: black;">员工信息</caption>
        <tr>
            <th></
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值