【Python成长之路】基于Flask开发网站 -- 基于重定向实现搜索功能

 

 

哈喽大家好,我是鹏哥。

 

今天继续上周的内容,仍然讲基于Flask开发网站,不过这次的控件是 ——基于重定向实现搜索功能

 

~~~上课铃~~~

 

Silver Scrapes(As Featured In the ESPN "This Is College GameDay" Spot)Danny McCarthy - Silver Scrapes (As Featured in the ESPN "This Is College GameDay" Spot)

1

写在前面

话不多说,在上周的批量删除功能基础上再新增一个搜索功能。因为在实现搜索功能过程中,关于界面重定向问题阻塞了我蛮长一段时间,并且在网上查找资料也无法快速解决我的问题。因此记录下我自己的解决方法,至少也算是一种页面重定向的实现方法。

2

效果展示

3

知识串讲(敲黑板啦)

1、flask重定向的坑:flask.redirect()

一般在百度查找重定向,多数帖子都是用redirect()方法。然后遇到仍然无法跳转的情况,就加上urf_for(),所以我开始的代码是这样的:

@app.route('/search', methods=['get','post'])def search_result():    content = request.args.get("search_content")    …… # 数据库查询代码省略    return redirect(url_for('test.html', content=content, labels=labels))

至少我认为写的没毛病,但是界面死活无法跳转到搜索结果的展示效果。(当然肯定是哪里写的不对,如果有大神知道的话,麻烦告知下)

2、通过window.location.href实现重定向

这里实现界面跳转的方式就不一样了,之前是通过Flask框架中的redirect方法,这里是在html的javascript方法中直接跳转到新界面,连获取request.args.get("search_content")的步骤都省略了。​​​​​​​

<!--新增搜索功能--><script>    (function(){      $('input[id="search"]').on('click', function(){                var content = document.getElementById("search_content").value;                var data = {                    "search_content":content                };                $.ajax({                    type: "get",                    url: "/",                    data: data,                    dataType: "json",                    success:window.location.href="search_result/"+content                    });        });        })();</script>

这是搜索功能的html代码,与之前方法的不同之处在于最后一句:success:window.location.href="search_result/"+content,即在点击搜索按钮后直接跳转网页到http://xx.xx.xx.xx/search_result/content。

然后对应的在flask框架中进行新界面的实现。

 

4

示例代码

1、html代码有2部分:搜索输入框和按钮的实现、搜索功能方法的实现(见上面)。

其中搜索输入框和按钮的实现示例代码如下:​​​​​​​

 <td><input type="text" placeholder="请输入设备IP" id="search_content">      <input type="button" value="开始搜索" id="search"> </td>

2、Flask部分的python代码

@app.route('/search_result/<content>', methods=['get','post'])def search_result(content):    sql = "select * from material_table where 网络IP='{}'".format(content)    cur = con.cursor()    cur.execute(sql)    content = cur.fetchall()    labels = [tuple[0] for tuple in cur.description]    return render_template('test.html', content=content, labels=labels)

这里有个小细节,app.route()路由中获取变量值是通过<>来获取,而在html中是 通过{}来获取,这里容易搞混。

如果想要完整代码,可以直接在github上获取:

https://github.com/yuzipeng05/flask_test.git

5

总结

下周见!

 

~~~下课铃~~~

 

【往期热门文章】:

【Python成长之路】10行代码教你免费观看无广告版的《庆余年》腾讯视频

【Python成长之路】如何用python开发自己的iphone应用程序,并添加至siri指令

【Python成长之路】从 零做网站开发 -- 基于Flask和JQuery,实现表格管理平台

点击下方诗句,可以留言互动喔  

慌慌张张不过图碎银几两,偏这碎银几两能解万千惆怅。

【关注“鹏哥贼优秀”公众号,回复“python学习材料”,将会有python基础学习、机器学习、数据挖掘、高级编程教程等100G视频资料,及100+份python相关电子书免费赠送!】

 

扫描二维码

    与鹏哥一起

学python吧!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值