2

申し訳ありませんが、スタックオーバーフロー内を検索してグーグルで検索しましたが、有用な情報は見つかりませんでした。私はフラスコアプリケーション、pythonバージョン2.6フラスコバージョン0.9を持っています

そのアプリケーション階層は次のようなものです

  application/
     __init__.py
     app.py
     hello/
       __init__.py
       view.py
       templates/
         hello.html

両方のファイルinit .py が空です

app.py
-----------------------
from flask import Flask
from flup.server.fcgi import WSGIServer
from hello.view import hello

app = Flask(__name__)
app.debug = True 

app.register_blueprint(hello, url_prefix='/hello')

if __name__ == '__main__':
    WSGIServer(app, bindAddress='/tmp/app.sock').run()

view.py
-----------------------
import os
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

hello = Blueprint('hello', __name__, template_folder='templates')

@hello.route('/')
def get_index():
    try:
        return render_template('hello.html')
    except TemplateNotFound:
        abort(404)

hello.html
-----------------------
<!DOCTYPE html>
<html>
    <head>
        {% block head %}
        <meta charset="utf-8">
        {% endblock %}
    </head>
    <body>
        <div>
            {% block body %}
            <h1><a href="{{ url_for('hello.get_index') }}">Click Me</a></h1>
        {% endblock %}
        </div>
    </body>
</html>

と入力すると正常に動作localhost:8080/helloしますが、html のリンクをクリックするとエラーになります。その URL 値はhref="/hello/hello/"(正しいはず/hello/ですか?) であることがわかりました。hello.get_index が にマップされていることは知って/hello/いますが、最初のものhello/が由来することはわかりません。どんなヒントでも大歓迎です。

4

1 に答える 1

2

ブループリントを登録するときに url_prefix パラメータを削除しようとしましたか? たとえば、以下を から変更するとどうなるでしょうか。

app.register_blueprint(hello, url_prefix='/hello')

app.register_blueprint(hello)
于 2012-08-03T02:38:30.133 に答える