2013-09-21 4 views
0

Я новичок в фляге (используя его с nginx), и я пытаюсь понять логику URL. У меня есть 2 скрипта python ... /site/myapp.py и /site/bar.py.Python Flask URL Logic для двух разных скриптов и разных видов

У меня есть три вопроса, пожалуйста:

  1. Если я хочу запустить myapp.py только и не /site/bar.py, как добавить правило URL, чтобы запустить его с add_url_rule?
  2. Как бы я сделал то же самое, если бы захотел запустить /site/bar.py?
  3. Если бы я хотел, чтобы запустить myapp.py, и имеют две разные точки зрения ... в зависимости от xml.open("POST", "/site/myapp/view1", true) и xml.open("POST", "/site/myapp/view2", правда) .... как бы я присвоить URL для каждого зрения в myapp.py с add_url_rule ?

питон скрипт /site/myapp.py:

[email protected]:/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')) 

[email protected]:/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; 
    } 

} 
+2

Flask не имеет CGI- или PHP-подобной системы маршрутизации. Схема URL может выглядеть совершенно иначе, чем структура файловой системы. Пожалуйста, начните с [Быстрый старт] (http://flask.pocoo.org/docs/quickstart/) или [Учебник] (http://flask.pocoo.org/docs/tutorial/) –

ответ

2

На 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 фона, и думать по-другому. Люди не будут получать доступ к вашему сайту, используя URL-адреса, такие как http://yourdomain.com/index.py. В принципе, вы сообщаете своему серверу, что фляжка отвечает за обработку URL-адресов, и вы сопоставляете URL-адреса с функциями. Просто как тот.

 Смежные вопросы

  • Нет связанных вопросов^_^