zoukankan      html  css  js  c++  java
  • flask_whooshalchemyplus 搜索

    • 搞了半天没搞好, 不过最后还是搞好了,嘿嘿嘿, 美滋滋,来首 Good Time
    • 好了好了, 进入正题
    1. 删库跑路, 哈哈哈 假的, 我是直接把database删了, 然后再创
    2. 直接跑的话会报错, 比如像db, 还有manage.py啥的懒得写了
    3. models.py
       import flask_whooshalchemyplus
       from jieba.analyse import ChineseAnalyzer
    
       class Student(db.Model):
           __tablename__ = 'student'
           __searchable__ = ['name', 'uuid']
           __analyzer__ = ChineseAnalyzer()
           id = db.Column(db.Integer, primary_key=True)
           uuid = db.Column(db.String(255), unique=True)
           name = db.Column(db.String(100))      
    
    
       flask_whooshalchemyplus.init_app(app)
    
       if __name__ == '__main__':
           db.create_all()
    
    1. 运行models.py
    2. forms.py
       from flask_wtf import FlaskForm
       from wtforms import StringField, SubmitField
       from wtforms.validators import DataRequired
    
    
       class SearchForm(FlaskForm):
           key = StringField(
               label='关键词',
               description='关键词',
               validators=[
                   DataRequired('请输入关键词!')
               ],
               render_kw={
                   'placeholder': '请输入关键词'
               }
           )
       
           submit = SubmitField(
               label='查询'
           )
    
    1. views.py
    
        @home.route('/search/', methods=['POST', 'GET'])
        def search():
            form = SearchForm()
            if form.validate_on_submit():
                data = form.data
                flask_whooshalchemyplus.whoosh_index(app, Student)
                return redirect(url_for('home.search_results', key=data['key']))
            return render_template('home/search.html', form=form)
        
        
        @home.route('/search_results/<string:key>')
        def search_results(key):
            results = Student.query.whoosh_search(key).all()
            return render_template('home/search_results.html', key=key, results=results, count=count)
    
    1. search.html
        <form method="post">
            {{ form.key }}
            {{ form.csrf_token }}
            {{ form.submit }}
        </form>
    
    1. search_results.html
        "{{ key }}"共有{{ count }}条
        <br>
        {% for i in results %}
            {{ i.name }}
            {{ i.uuid }}
            <br>
        {% endfor %}
    
    1. 貌似有时行有时不行 还是用数据库自带的模糊搜索吧, 也挺好用的
  • 相关阅读:
    .NET Core 使用Dapper 操作MySQL
    .NET Core HtmlAgilityPack HTML解析利器
    ASP.NET Core 开发-缓存(Caching)
    .NET Core 调用WCF 服务
    ASP.NET Core 开发-Logging 使用NLog 写日志文件
    Qt动态生成界面并通过拉姆达获取其返回值
    Qt启动C++线程并在线程中修改界面
    Vector求最大值最小值
    C/C++取消结构体字节对齐
    Matlab定时器
  • 原文地址:https://www.cnblogs.com/twfb/p/8955273.html
Copyright © 2011-2022 走看看