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></