我正在开发一个Python Flask应用程序,并尝试实现一个简单的搜索函数:
家/视图.py
from . import home_blueprint
################################# SEARCH #################################
@home_blueprint.route("/search")
@login_required
def search():
results = Politic.query.whoosh_search(request.args.get('query')).all()
#results = Politic.query.whoosh_search(query).all()
for p in results:
print p.publicName
print results
return render_template('search_results.html',
results=results)
很简单,在我的项目中加入蓝图之前,我就开始工作了。当我在视图中调用这个函数时,我什么也没有得到。在
更新!我的基本.html文件:
^{pr2}$因为url_for查找函数,所以我传递了home_蓝图和我要调用的函数(search)。在
为什么我没有进入搜索功能?我的.html文件是否有问题?在
谨致问候
编辑:(init.py)
#################
#### imports ####
#################
################
#### config ####
################
from flask import Flask, g
app = Flask(__name__)
from project.models import db, User, Politic, Organization
import datetime
from forms import SearchForm
import os
from flask_login import LoginManager, \
current_user
print(os.environ['APP_SETTINGS'])
app.config.from_object(os.environ['APP_SETTINGS'])
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['WHOOSH_BASE'] = 'whoosh'
db.init_app(app)
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = "users.login"
from project.users.views import users_blueprint
#from project.home.views import home_blueprint
from project.home import home_blueprint
from project.politicians.views import politicians_blueprint
from project.organizations.views import organizations_blueprint
from project.proposals.views import proposals_blueprint
from project.flag.views import flag_blueprint
# register our blueprints
app.register_blueprint(users_blueprint)
app.register_blueprint(home_blueprint)
app.register_blueprint(politicians_blueprint)
app.register_blueprint(organizations_blueprint)
app.register_blueprint(proposals_blueprint)
app.register_blueprint(flag_blueprint)
@app.before_request
def before_request():
g.user = current_user
if g.user.is_authenticated:
g.user.last_seen = datetime.datetime.utcnow()
db.session.add(g.user)
db.session.commit()
g.search_form = SearchForm()
@login_manager.user_loader
def user_loader(email):
"""Given *user_id*, return the associated User object.
:param unicode user_id: user_id (email) user to retrieve
"""
return User.query.filter_by(email=email).first()
编辑我的项目树:
我做了梅特米尔建议的改变,现在我的项目结构是: 项目/主页/\uu init\uy.py
from flask import Blueprint
home_blueprint = Blueprint(
'home', __name__,
template_folder='templates'
)
from . import views
当我搜索时:
应该的时间:
不过,它没有进入搜索功能。 我不知道我做错了什么。在
任何帮助都太好了!谢谢。在
如果您在项目中打开python解释器(如果您正在使用的话,请确保激活您的虚拟env),您可以检查应用程序上注册的端点以及它们指向的函数。在
我想我知道你的问题了。可能您正在同一位置创建}应用程序。蓝图类似于应用程序,flask有蓝图,所以你可以有大的应用程序结构。我将向您展示两个示例第一个不起作用,另一个起作用:
Blueprint
和{^{pr2}$
所以现在你写
action="{{url_for('main.index')}}"
就可以了。在相关问题 更多 >
编程相关推荐