当前位置: 首页 > 知识库问答 >
问题:

基于关键字的烧瓶搜索

史烨
2023-03-14

我是flask的新手,我正在做一个博客项目,我正在尝试添加一个搜索框,在这个搜索框中,访问者或用户输入一个关键字,并显示与该关键字相关的帖子。我尝试了whoosh索引,但由于我使用了python3,所以没有成功。9所以我试了这个:

@app.route('/search', methods =["GET", "POST"])
def search():
    search_keyword = request.form.get("search_box")
    results =  db.engine.execute("SELECT * FROM post "
                           "WHERE title = search_box ")
    return render_template('home.html', results=results)

尝试获取输入字段的值

<form class="form-inline my-2 my-lg-0">
                  <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" method="GET" action="search"  name="search_box">
                  <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
                </form>

没有错误,但它不工作,有人能帮我吗?谢谢

共有1个答案

丌官霖
2023-03-14

最后我用了flask_msearch

我安装了它:pip安装flask-msearch

初始化。py:

from flask_msearch import Search
...
search = Search(app)
search.init_app(app)
search.create_index(update=True)
MSEARCH_INDEX_NAME =  os.path.join(app.root_path,'msearch')
MSEARCH_PRIMARY_KEY = 'id'
MSEARCH_ENABLE = True

在模型中。py:

class Post(db.Model):
    __searchable__ = ['title', 'content']

路线。py:

@app.route('/search/')
def search():
    keyword = request.args.get('query')
    posts = Post.query.msearch(keyword,fields=['title', 'content'])
    return render_template("home.html",title='Searching..' + keyword, posts=posts)

在我的模板中:

<form method="GET" action="/search/">
                      <input type="text" name="query" class="form-control" placeholder="Search..." />
                      <button type="submit" class="btn btn-light-primary font-weight-bold">
                              
                      </button>
                    </div>
                  </form>
                  </div>

谢谢所有想帮我的人

 类似资料:
  • 我发现很难找到有关这方面的资料。会是什么?我如何解决这个问题?有哪些可能的修复方法? UWSGI日志文件 时钟来源:unix检测到CPU核数:4当前工作目录:/home/pi检测到二进制路径:/usr/local/bin/uwsgi!!!没有内部路由支持,重建与pcre支持!!!*警告:您在没有主进程管理器的情况下运行uWSGI进程数限制为7336内存页大小为4096字节检测到最大文件描述符号:6

  • const UserSchema=new mongoose.schema({name:String,project_name:String}); const User=new mongoose.model(“User”,UserSchema); 我希望,如果一个项目名称是“机器学习和oops”,我在搜索框中搜索“oops”,我应该得到“机器学习和oops”显示

  • 我有一个烧瓶应用程序,与MySQL使用sqlalChemy连接。DB查询时发生奇怪的错误。 `回溯(最近一次调用):文件“/home/Desktop/work/nesting app/env/lib/python3.8/site packages/sqlalchemy/util/_collections.py”,第1008行,调用返回self。注册表[key]键错误: 在处理上述异常期间,发生了另

  • 我正在使用flask-RESTful开发API,并且对Flask的jsonify函数有问题。我正在使用flask-marshmlet进行JSON序列化。下面是一个非常简化的代码片段: 在本地,endpoint将返回具有键“data”和“error”的json;但是,当在Linux服务器上运行时,它会返回一个包含列表和在没有“data”和“error”键的情况下返回的结果。 我已经确定这种不一致是由

  • 本文向大家介绍基于jQuery实现搜索关键字自动匹配功能,包括了基于jQuery实现搜索关键字自动匹配功能的使用技巧和注意事项,需要的朋友参考一下 今天我们就一起来看一个简单的基于jquery的关键字自动匹配的例子,希望文章能够对各位有帮助。 例子一 在项目中,有时候需要用户选择城市,但是城市太多,用户选择起来不太方便,所以提供了一个用户可以通过输入框输入城市的汉字或者拼音简写。结果示意图如下:

  • 我正在尝试用Angular 7建立一个动态研究。我正在用多个键从API中获取一个数组:[_id= 我用ngFor显示我所有的结果,我已经用我找到的教程创建了一个过滤管道… 这是我的研究部分: 这是我的过滤管功能: 但是这只会过滤这样的数组:[

  • 我在这里遵循烧瓶教程: http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world 我达到了我尝试的程度/跑py和我得到: 这看起来类似于: ImportError:没有名为flask的模块 但他们的解决方案没有帮助。作为参考,我确实有一个名为flask的文件夹,其中一位用户提到该文件夹可能会导致问题

  • 我已将芹菜配置为在dev box上为Flask应用程序运行异步作业,如下所示: 配置。py: 管理py: 在启动应用程序之前,我先启动redis: 然后,当我运行应用程序(run_芹菜)时,会显示以下芹菜配置: <>** ---------- . 以及以下重复出现的错误: 错误/主进程消费者:无法连接到amqp://guest:**@127.0.0.1:5672//:[Errno 111]连接拒绝