0

私はフラスコ(nginxで使用)が初めてで、URLロジックを理解しようとしています。私は 2 つの Python スクリプトを持っています.... /site/myapp.py と /site/bar.py.

質問が 3 つあります。

  1. /site/bar.py ではなく myapp.py のみを実行したい場合、add_url_rule で実行する URL ルールを追加するにはどうすればよいですか?
  2. 代わりに /site/bar.py を実行したい場合、どうすれば同じことができますか?
  3. myapp.py を実行し、2 つの異なるビューを使用したい場合、truexml.open("POST", "/site/myapp/view1", true)と に応じてxml.open("POST", "/site/myapp/view2"、add_url_rule を使用して myapp.py の各ビューに URL を割り当てるにはどうすればよいですか?

Python スクリプト /site/myapp.py:

root@chat:/site# cat myapp.py
import flask, flask.views
app = flask.Flask(__name__)

class View1(flask.views.MethodView):
    def post(self):
    pass

app.add_url_rule('/site/myapp', view_func=View1.as_view('view1'))

root@chat:/site# 

Javascript 関数:

function foo() {
        var xml = new XMLHttpRequest();
        xml.open("POST", "/site/myapp", true);
        xml.send(form);
        console.log("sent")
        xml.onreadystatechange = function () {
            console.log(xml.readyState);
            console.log(xml.status);
            if (xml.readyState == "4" && xml.status == "200"){
                console.log("yes");
                console.log(xml.responseText);
            }
        }
    }

nginx 構成:

server {
    listen 10.33.113.55;

    access_log /var/log/nginx/localhost.access_log main;
    error_log /var/log/nginx/localhost.error_log info;

location / {
root /var/www/dude;
}

location /site/ {
       try_files $uri @uwsgi;
}

location @uwsgi {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:3031;
    }

}
4

1 に答える 1

2

フラスコのチュートリアルでは、次のようなものを見つけることができます:

@app.route('/')
def show_entries():
    cur = g.db.execute('select title, text from entries order by id desc')
    entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
    return render_template('show_entries.html', entries=entries)

つまり、 で Web サイトにアクセスする人は誰でも関数http://yourdomain.tld/を実行しshow_entries、 の戻り値がrender_template('show_entries.html', entries=entries)ユーザーに送信されます。

このページでは、次のことも確認できます。

@app.route('/')
def index():
    pass

と同等です

def index():
    pass
app.add_url_rule('/', 'index', index)

PHP のバックグラウンドを忘れて、別の方法で考える必要があります。のような URL を使用して Web サイトにアクセスすることはありませんhttp://yourdomain.com/index.py。基本的に、flask が URL の処理を​​担当していることをサーバーに伝え、URL を関数にマップします。そのような単純な。

于 2013-10-08T16:57:47.377 に答える