1

ブループリントのサブディレクトリがサーバー上の apache2 によって表示され、 example.com /myapplicationsubfolder /routedblueprintfunction のような URL で提供されるように、Python 用にサーバー上にミドルウェアをセットアップしようとしています。

/users/ フォルダー内の__init__.pyは次のようになります。

class WebFactionMiddleware(object):
    def __init__(self, app):
        self.app = app
    def __call__(self, environ, start_response):
        environ['SCRIPT_NAME'] = '/myapplicationsubfolder'
        return self.app(environ, start_response)


from index import application
application.wsgi_app = WebFactionMiddleware(application.wsgi_app)

アプリ ファクトリを作成した後、これを使用できなくなりました。

from app import app
app.wsgi_app = WebFactionMiddleware(app.wsgi_app)

そして、index.pyからフラスコアプリを取得しようとしています

Index.pyは次のようになります。

from app import create_app
application = create_app()
application.run()

app.pyは次のようになります。

def configure_errors(app):
  @app.errorhandler(500)
  def internal_server_error(error):
      return render_template('500.html'), 500

def create_app():
    app = Flask(__name__)
    app.config.from_object('config')

    from users.views import b_users
    db.init_app(app)
    app.register_blueprint(b_users)
    configure_errors(app)

    return app

Python Flask Web サイトのサブディレクトリに WSGI ミドルウェアを使用する、blueprinted-appfactory-implemented の大規模なソース コードへのリンクを誰かが持っている場合、それは非常に役立ちます。

重大な循環インポートの問題またはサブディレクトリの init.py の問題が発生しています。

[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]   File "/home/somefolder/webapps/applicationsubfolder/htdocs/index.py", line 8, in <module>
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]     from app import create_app
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]   File "/home/somefolder/webapps/applicationsubfolder/htdocs/app.py", line 5, in <module>
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]     from users.views import b_users
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]   File "/home/somefolder/webapps/applicationsubfolder/htdocs/users/__init__.py", line 9, in <module>
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]     from index import application
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]   File "/home/somefolder/webapps/applicationsubfolder/htdocs/index.py", line 8, in <module>
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1]     from app import create_app
[Sat Nov 24 05:32:59 2012] [error] [client 127.0.0.1] ImportError: cannot import name create_app
4

1 に答える 1

2

私はあなたの要求を完全には確信していません. でも試してみましょう。

  1. ビュー関数の URL の前にブループリント フォルダー名のプレフィックスを付ける場合は、次のようにします。

    app.register_blueprint(b_users, url_prefix='/folder_name')

    URLはlocalhost/folder_name/url

  2. これを create_app メソッド内に移動します。

    app.wsgi_app = WebFactionMiddleware(app.wsgi_app)
    
于 2012-11-24T20:20:13.163 に答える