nginx 用于2个不同脚本和不同视图的Python Flask URL逻辑

ee7vknir  于 2023-03-01  发布在  Nginx
关注(0)|答案(1)|浏览(120)

我是flask的新手(使用nginx),我正在尝试理解URL逻辑。我有两个python脚本.... /site/myapp.py和/site/bar.py。
我有三个问题:
1.如果我只想运行myapp.py而不想运行/site/bar.py,如何添加url规则以使用add_url_rule运行它?
1.如果我想运行/site/ www.example.com,我该怎么做呢bar.py?
1.如果我想运行myapp.py,并且有两个不同的视图......取决于xml.open("POST", "/site/myapp/view1", true)xml.open("POST", "/site/myapp/view2",对)......我如何使用add_url_rule为myapp.py中的每个视图分配一个url?
python脚本/站点/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;
    }

}
b1uwtaje

b1uwtaje1#

flask tutorial上,您可以找到以下内容:

@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)

这意味着,任何在http://yourdomain.tld/访问您网站的人都将执行show_entries函数,并且render_template('show_entries.html', entries=entries)的返回值将被发送给用户。
this page上,您还可以发现:

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

相当于

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

你需要忘记你的PHP背景,换一种方式思考。人们不会使用像http://yourdomain.com/index.py这样的URL访问你的网站。基本上,你告诉你的服务器那个flask负责处理URL,然后你把URLMap到函数。就这么简单。

相关问题