Python 金甲2号蓝图路线错误

Python 金甲2号蓝图路线错误,python,flask,jinja2,Python,Flask,Jinja2,我正在开发一个Python Flask应用程序,并尝试实现一个简单的搜索函数: home/views.py from . import home_blueprint ################################# SEARCH ################################# @home_blueprint.route("/search") @login_required def search(): results = Politic.query

我正在开发一个Python Flask应用程序,并尝试实现一个简单的搜索函数:

home/views.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)
from flask import Blueprint

home_blueprint = Blueprint(
    'home', __name__,
    template_folder='templates'
)

from . import views
非常简单,在我将蓝图加入到我的项目中之前,我就已经开始工作了。当我在视图中调用这个函数时,我什么也得不到

更新mybase.html文件:

<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>
编辑我的项目树:

我做了metmirr建议的更改,现在我的项目结构如下: project/home/\uuuuuuu init\uuuuuuuuuuuuu.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)
from flask import Blueprint

home_blueprint = Blueprint(
    'home', __name__,
    template_folder='templates'
)

from . import views
URL当我搜索时:

应该是什么时候:

不过,它并没有进入搜索功能。 我不知道我做错了什么


任何帮助都是伟大的!谢谢。

我想我明白你的问题了。您可能正在同一位置创建
Blueprint
Flask
应用程序。蓝图类似于应用程序,flask有蓝图,因此您可以拥有大型应用程序结构。我将向您展示两个示例,第一个不起作用,另一个起作用:

from flask import Flask, Blueprint

app = Flask(__name__)

main = Blueprint('main', __name__)
app.register_blueprint(main)

@main.route('/')
def index():
    return "Hello Flask"


因此,现在当您编写
action=“{url\u for('main.index')}}”时,
可以正常工作。

如果您在项目中打开python解释器,(如果使用虚拟环境,请确保激活虚拟环境),您可以检查应用程序上注册的端点以及它们指向的函数

>>> import app
>>> app = app.create_app()
>>> app.url_map
Map([<Rule '/search' (OPTIONS, POST) -> **folder_where_your_search_views_are_located**.search>,
     <Rule '/search_results/<query>' (OPTIONS, GET) -> **folder_where_your_search_views_are_located**.search_results>])
导入应用程序 >>>app=app.create_app() >>>app.url\u地图 地图([**您的搜索视图所在的文件夹**。搜索>, **文件夹(您的搜索视图所在的位置**。搜索结果>]))
呈现的HTML中有什么URL?您得到了什么输出?你试过调试吗?什么也没发生,它停留在我的主页路径上,即使
g.search\u表单.validate\u on\u submit()
返回True,也无法进行搜索。我需要它来进入我的搜索功能,该功能调用重定向到搜索结果。htmlWhat you mean@dir您已经告诉我们您希望发生什么,但没有告诉我们正在发生什么。
URL\u为
返回的URL是什么?正在调用哪个端点?您是否收到错误?如果我这样做,我会收到:
BuildError:('home\u blueprint.search',{},None)
您是否注册了
home\u blueprint
是的,它已注册。为什么会发生这种情况真的很奇怪,其他两个参数是什么?
home\u blueprint
只是一个变量的名称。蓝图名称是在
home\u blueprint=blueprint(…)
中传递给
blueprint
的名称。我假设这是
“home”
。确切地说,home是我的蓝图名称,所以我假设调用我的home\u蓝图中函数的正确方法是
url\u for('home.search')
。我说的对吗?
home.search>,
就是我得到的