簡體   English   中英

使用Application Factory實施Flask-WhooshAlchemy

[英]Implementing Flask-WhooshAlchemy using an Application Factory

如果應用是在全球范圍內創建的

__init__.py

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')
from app import views

下面在run.py中的這段代碼將很容易開始在views.py中使用whoosh_search ,例如post = Post.query.whoosh_search(name, limit=3).all(

運行

import os
from app import app


from flask.ext.script import Manager
from flask.ext.moment import Moment

from flask.ext.sqlalchemy import SQLAlchemy
import flask.ext.whooshalchemy as whooshalchemy


basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] =\
    'sqlite:///' + os.path.join(basedir, 'post.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SECRET_KEY'] = 'hard to guess string'

db = SQLAlchemy(app)

manager = Manager(app)
moment = Moment(app)

class Post(db.Model):
    __tablename__ = 'post'
    __searchable__ = ['body']
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime))

    def __repr__(self):
        return '<Post %r>' % (self.body)

whooshalchemy.whoosh_index(app, Post)

if __name__ == '__main__':
    db.create_all()
    manager.run()

因此,如何使用Application Factory實現Flask-WhooshAlchemy

__init__.py

from flask import Flask
from flask.ext.bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.sqlalchemy import SQLAlchemy
from config import config

bootstrap = Bootstrap()
moment = Moment()
db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    bootstrap.init_app(app)
    moment.init_app(app)
    db.init_app(app)

    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    return app

如何使用Application Factory在whooshalchemy.whoosh_index(app, Post)注冊app whooshalchemy.whoosh_index(app, Post)以便whoosh_search可以像上一個示例一樣在views.py中使用。

在您的應用程序中,工廠函數為fx。 在初始化所有應用程序之后以及注冊藍圖之前。 您應該導入模型並運行whoosh_index。 類似於以下內容:

  from .model import Post
  whooshalchemy.whoosh_index(app, Post)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM