Python flask实战订餐系统微信小程序-37会员搜索功能和会员详情页面实现

这篇博客介绍了如何在B站的配套视频教程中实现会员搜索功能和会员详情页面。首先,通过Member.py后端传递状态到web端,并在index.html动态读取。接着,实现了搜索功能,允许用户按状态筛选,同时更新搜索后的selected状态。此外,还展示了如何加载自定义的member/index.js来处理搜索和操作功能。最后,详细阐述了如何在info接口中获取会员详情并显示在info.html上。
摘要由CSDN通过智能技术生成

B站配套视频教程观看
会员搜索功能和会员详情页面实现

动态读取状态

Member.py后端传递状态到web端

    resp_data['list'] = list
    resp_data['pages'] = pages
    resp_data['search_con'] = req
    resp_data['status_mapping'] = app.config['STATUS_MAPPING']
    resp_data['current'] = 'index'

    return ops_render( "member/index.html", resp_data )

index.html动态读取有数据:

<div class="form-group">
    <select name="status" class="form-control inline">
        <option value="-1">请选择状态</option>
        {% for tem_key in status_mapping %}
            <option value="{{tem_key}}">{{status_mapping[tem_key]}}</option>
        {% endfor %}
    </select>
</div>

运行可以正常的读取到状态

实现搜索功能

创建member文件夹,基于account/index.js创建自己的js

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zxTkpyrT-1629548690816)(d.assets/image-20210821192146211.png)]

;
var member_index_ops = {
    init:function () {
        this.eventBind();
    },
    eventBind:function () {
        $(".wrap_search .search").click(function () {

            $(".wrap_search").submit()
        });

        var that = this;
        $(".remove").click(function () {
            that.ops("remove", $(this).attr("data"))
        });

        $(".recover").click(function () {
            that.ops("recover", $(this).attr("data"))
        });
    },
    ops:function (act, id) {
        var callback = {
            'ok':function () {
                $.ajax({
                url:common_ops.buildUrl("/account/ops"),
                type:"POST",
                data:{
                    act:act,
                    id,id
                },
                dataType:'json',
                success:function (res) {
                    var callback = null;
                    if(res.code == 200){
                        callback = function () {
                            window.location.href = window.location.href;
                        }
                    }
                    common_ops.alert(res.msg, callback);
                }
            });

            },
            'cancel':null
        };

        common_ops.confirm((act=="remove"?"确定删除?":"确定恢复?"),callback);

    }
};

$(document).ready(function () {
    member_index_ops.init()
})

将js加载到index.html中

{%block js %}
<script src="{{ buildStaticUrl('/js/member/index.js') }}"></script>
{% endblock %}

运行可以看到js被正常加载了

在这里插入图片描述

修改后端python接口获取状态:

@route_member.route( "/index" )
def index():
    resp_data = {}

    req = request.values
    page = int(req['p']) if('p' in req and req['p']) else 1

    query = Member.query

    if 'status' in req and int(req['status']) > -1:
        query = query.filter(Member.status == int(req['status']))

这时 搜索以删除状态的账号 就没有数据了

在这里插入图片描述

使得搜索后selected要搜索的状态:

                <div class="form-group">
                    <select name="status" class="form-control inline">
                        <option value="-1">请选择状态</option>
                        {% for tem_key in status_mapping %}
                            <option value="{{tem_key}}" {% if tem_key == search_con['status'] %} selected {% endif %}>{{status_mapping[tem_key]}}</option>
                        {% endfor %}
                    </select>
                </div>

根据搜索内容进行搜索:“

def index():
    resp_data = {}

    req = request.values
    page = int(req['p']) if('p' in req and req['p']) else 1

    query = Member.query

    if 'mix_kw' in req:
        query = query.filter(Member.nickname.ilike("%{0}%".format(req['mix_kw'])))

index.html展示搜索字段

value="{{search_con[‘mix_kw’]}}"

                <div class="form-group">
                    <div class="input-group">
                        <input type="text" name="mix_kw" placeholder="请输入关键字" class="form-control" value="{{search_con['mix_kw']}}">
                        <span class="input-group-btn">
                            <button type="button" class="btn  btn-primary search">

运行 就会自动根据用户名称进行搜索

传递分页数据:

<input type="hidden" name="p" value="{{search_con['p']}}">

                <div class="form-group">
                    <div class="input-group">
                        <input type="text" name="mix_kw" placeholder="请输入关键字" class="form-control" value="{{search_con['mix_kw']}}">
                        <input type="hidden" name="p" value="{{search_con['p']}}">

详情页面功能的实现

index.html传递id:

<a href="{{ buildUrl('/member/info') }}?id={{item.id}}">

            <tbody>
            {% if list %}
                {% for item in list %}
            <tr>
                <td><img alt="image" class="img-circle" src="{{item.avatar}}" style="width: 40px;height: 40px;"></td>
                <td>{{item.nickname}}</td>
                <td>{{item.sex_desc}}</td>
                <td>{{item.status_desc}}</td>
                <td>
                    <a href="{{ buildUrl('/member/info') }}?id={{item.id}}">

Member.py添加info后端接口的实现:

# -*- coding: utf-8 -*-
from flask import Blueprint,request,redirect
from common.libs.UrlManager import UrlManager
@route_member.route( "/info" )
def info():
    resp_data = {}

    req = request.args
    id = int(req.get("id", 0))
    rebackUrl = UrlManager.buildUrl("member/index")
    if id < 1:
        return redirect(rebackUrl)

    info = Member.query.filter_by(id = id).first
    if not info:
        return redirect(rebackUrl)

    resp_data['info'] = info
    resp_data['current'] = 'index'

    return ops_render( "member/info.html" ,resp_data)

模板页面info.html动态数据的响应

<div class="row m-t">
    <div class="col-lg-12">
        <div class="row">
            <div class="col-lg-12">
                <div class="m-b-md">
                    <a class="btn btn-outline btn-primary pull-right" href="{{ buildUrl('/member/set') }}?id={{info.id}}">
                        <i class="fa fa-pencil"></i>编辑
                    </a>
                    <h2>会员信息</h2>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-2 text-center">
                <img class="img-circle circle-border" src="{{ info.avatar }}"
                     width="100px" height="100px">
            </div>
            <div class="col-lg-10">
                <p class="m-t">姓名:{{ info.nickname }}</p>
                <p>性别:{{ info.sex_desc }}</p>
            </div>
        </div>
SOPI垂直搜索引擎2.0是一个从信息采集到分析到索引的整套解决方案,让你也可以轻松拥有一个多功能垂直搜索引擎。可以针用于行业垂直信息进行搜索,网站搜索等各类应用。 SOPI垂直搜索引擎系统的应用特点 外网搜索引擎:众多内容型网站为了保持数据的最新,不得不花费大量的人力进行内容更新。 SOPI 系统可以锁定需要的网站,进行定时采集此网站的最新内容;可以节省大量的人力成本,而且可以保证信息的全面性,同时结合搜索技术在海量的信息库中快速找到需要的信息。 高应用扩展性,可以根据用户需求快速配置成为不同类型的垂直搜索引擎,如成为商机搜索、产品信息及其他各类需要的信息。只需普通技术人员便可以实现。 极少量的人工干预,系统管理员仅通过管理界面即可自动实现各类信息的搜索。大部分工作由系统自动完成。 自动生成对网站的配置,提高工作效率及降低工作难度,垂直搜索引擎对不同网站进行不同配置是必然的,本系统应用自动化技术将人工工作降到最低,将工作人员的技术要求降至最低。 可以从多个界而采集信息,系统进行自动合并,如从一个页面搜索产品信息,另一个网页搜索公司信息,将两个页面的内容自动合并。 站内搜索引擎:可以轻松将内部网站的内容进行索引,为企业提供企业知识管理,或为网站用户提供自身网站的搜索服务。 SOPI 搜索系统采用先进的索引机制,高效对全文进行索引及搜索,可以产生与百度和 GOOGLE 相同的准确结果,而且快速; SOPI搜索引擎系统的技术特点 使用与GOOGLE相同的数据库系统Oralce Berkeley DB嵌入式数据库,千万级数据状况下操作数据仍保持在毫秒级,与使用ORACLE或SqlServer数据库性能提升数百倍。 系统结构的合理分离有利于分布式架构,适应未来大量的搜索工作,可以轻易在多服务器环境中进行应用。 各子系统相互独立,任一子系统的停止运行不影响其他系统,有效保证稳定性; 先进的文章及图片指纹技术,超低重复率。由于不同网站有大量重复信息,如果不能有效辨别文章是否存在将会有大量重复信息存在,图片一样会有大量重复存在。 SOPI 系统采用先进的文章和图片识别系统有效保障超低重复率; 对文章和图片的超强提取能力,系统可以在各种复杂的网页中提取标题正文和时间等参数,可以高智能的提取有用的信息,过虑无用信息; 高性能的分词组件,字典词库高质量,保证索引和搜索的准确性; 优秀的管理平台,可以方便管理进行信息采集的站点列表,及对下载的层级进行自定义; 可便捷对系统进行扩展,以满足不同的需求 SOPI垂直搜索引擎子系统 SpiderService 作用:通过此服务将需要搜索的网站中的信息下载到本地 存储关系:通过从存储系统中读取下载列表,将下载的信息保存至硬盘 运行方式:以WINDOW服务方式自动运行 人工干预度:不需干预 AnalyseService 作用:此服务将下载到本的信息进行分析,为SpiderService提供新的URL列表,同时根据配置对网页中的内容进行提取,如供求信息\\文章\\产品信息等 存储关系:将分析结果及新URL保存到数据库 运行方式:以WINDOW服务方式自动运行 人工干预度:不需干预 AutoMatchService 作用:此服务用来自动匹配字段信息,如根据网站中分析的地区信息\\行业分析信息等各类分类信息匹配成为系统需要的信息,如从网站获得的地区信息:浙江省>>杭州市>>将这一内容自动匹配为浙江省或杭州市,也可以根据企业名自动匹配地区信息,如:杭州市欧派信息技术有限公司匹配为杭州市 存储关系:根据数据库中的存储结果自动匹配为需要形式的结果 运行方式:以WINDOW服务方式自动运行 人工干预度:不需干预 IndexService 作用:此服务用来将完善的信息索引到索引库,提供外部进行搜索,通过索引库的建立可以向用户提供如类似BAIDU一样的搜索 存储关系: 运行方式:以WINDOW服务方式自动运行 人工干预度:不需干预 TokenizerService 作用:此服务用来向WEB提供分词服务,向用户BAIDU式搜索提供支持 存储关系:从数据库读取信息,转换成索引库中的内容 运行方式:以WINDOW服务方式自动运行 人工干预度:不需干预 管理WEB 作用:通过管理WEB可以实现需要的搜索及自定义的结果 存储关系:操作数据库及配置库 运行方式:WEB形式运行 人工干预度:人工干预 用户WEB 作用:向用户提供信息服务 存储关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值