3

Python Web サイトに mod_python を使用する前に。残念ながら、mod_python は最新ではないため、別のフレームワークを探して mod_wsgi を見つけました。

mod_python では、index メソッドと他のメソッドを持つことができました。呼び出される複数のページが必要です。このようなもの:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

def test(environ, start_response):
    status = '200 OK'
    output = 'Hello test!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

mod_wsgiでそれは可能ですか?

解決策: Flask フレームワークは私が必要とすることを行います

#!/usr/bin/python
from flask import Flask
from flask import request
app = Flask(__name__)
app.debug = True
@app.route("/")
def index():
    return "Hello index"

@app.route("/about")#, methods=['POST', 'GET'])
def about():
    content = "Hello about!!"
    return content

if __name__ == "__main__":
    app.run()
4

1 に答える 1

4

WSGI は webapps の一般的なエントリ ポイントです。つまり、mod_wsgi を検索しているときに hello world しか見つからないのは、標準を実装するフレームワークではなく、mod_wsgi を検索しているためです。

そのように見てください、wsgiはタマネギに少し似ています。Web サーバーはリクエストを呼び出し可能オブジェクトに送信します。と の 2 つのパラメーターを使用environしますstart_response。私が知る限り、start_response はヘッダーを送信する関数であり、environ はすべてのパラメーターが格納される場所です。

独自のフレームワークを展開したり、ピラミッドやフラスコなどを使用したりできます。これらの各フレームワークは、wsgi でバインドできます。

次に、リクエストを処理する wsgi ミドルウェアを作成します。次に、「PATH_INFO」を解析して、さまざまな呼び出し可能オブジェクトを照合できます。

def my_index(environ):
    response_headers = [('Content-type', 'text/plain')]
    return response_headers, environ['PATH_INFO']

def application(env, st):
    response = None
    data = None
    if environ['PATH_INFO'] == '/index':
        response, data = my_index(environ)

    st('200 ok', response)

    return [data]

これはかなり単純な例ですが、Environ を使用すると、やりたいことが何でもできます。wsgi 自体は、mod_python で慣れ親しんだことは何もしません。これは実際には、Web サーバー用の python のインターフェイスにすぎません。

編集

コメントで他の人が言ったように、自分が何をしているのかわからない場合は、自分でロールバックしようとしないでください。他のフレームワークの使用を検討し、まずそれについて詳しく学んでください。

たとえば、関数を URL にバインドする適切な方法を記述する必要があります。私の例で書いたように、かなり悪いですが、バックグラウンドでどのように行われるかを理解する必要があります。正規表現を使用してリクエストを処理して ID を抽出するか、ピラミッドとゾープのトラバーサルに似たものを使用できます。

どうしても自作したい場合は、webob チュートリアルをご覧ください。

http://docs.webob.org/en/latest/do-it-yourself.html

于 2012-06-29T09:02:37.053 に答える