나는 파이썬 플라스크 응용 프로그램을 개발 그리고 난 간단한 검색 기능을 구현하기 위해 노력하고있어 :/views.py잘못된 jinja2 청사진 경로
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)
매우 간단
집 프로젝트에 청사진을 포함하기 전에 작업 해 보았습니다. 내 뷰에서이 함수를 호출하면 아무 것도 얻을 수 없습니다.
업데이트! 내 base.html 파일 :
url_for 내가 내 home_blueprint을 통과하는 기능과 내가 (검색)를 호출하려는 기능을 찾습니다 때문에<form class="form-inline" method="GET" action="{{url_for('home.search')}}">
<div class="form-group">
<label for="query">Poltician</label>
<input type="text" class="form-control" name="query" id="query">
</div>
<button type="submit" class="btn btn-primary">Search</button>
</form>
.
검색 결과에 이 표시되지 않는 이유가 있습니까? 기능이 있습니까? 내 .html 파일에서 뭔가 잘못하고 있습니까?
안부
편집 : (초기화 평)
#################
#### 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()
편집 내 프로젝트 트리 : 나는 변경 제안 metmirr 않았다
~ d를 지금 내 프로젝트 구조는 이것이다 : 프로젝트/홈/__ 내가 검색 init__.py
from flask import Blueprint
home_blueprint = Blueprint(
'home', __name__,
template_folder='templates'
)
from . import views
URL :
가해야 할 때 :
여전히 검색 기능에 포함되지 않습니다. 나는 내가 무엇을 잘못하고 있는지 전혀 몰랐다.
도움이 될 것입니다. 감사.
렌더링 된 HTML에 어떤 URL이 있습니까? – dirn
출력은 얼마나됩니까? 디버깅을 시도 했습니까? – MrLeeh
아무 일도 일어나지 않는다. 그것은 내/home 라우트에 있고'g.search_form.validate_on_submit()'이 True를 반환하는 것을 검색하지 못한다. 리디렉션을 호출하는 검색 기능을 사용하려면 ** search_results.html ** – Perseverance