2014-02-28 45 views
1

我剛剛嘗試了here這個例子,它應該顯示jquery如何通過Flask發送和獲取python函數中的數據。我把它們放在同一個目錄下,當我到localhost但計算失敗時,索引文件會顯示出來。如何燒瓶知道要查看哪個python文件?

我的問題是,這些文件之間的鏈接在哪裏?沒有提到python目錄,甚至沒有提到python文件名。我是燒瓶和JSON的總新手。我試圖找到一些教程或樣本,但他們讓我更加困惑。

這件事究竟如何工作?

@app.route('/_add_numbers') 
+0

你在使用什麼操作系統? – youssefhassan

+0

@youssefhassan覆盆子pi raspbian。 – yvonnezoe

+0

@youssefhassan:無論這與操作系統Flask在運行? –

回答

2

傳入的URL包括路徑:

http://example.com/path/on/your/server 

其中example.com是服務器的主機名和/path/on/your/server部分對你的看法配置的路由相匹配。

@app.route('/_add_numbers') 
def some_view(): 
    # do something, returning a string, a tuple, a response object or a WSGI app 

匹配文字路徑/_add_numbers而沒有別的; Flask將運行該功能。

請注意,這不會路由到任何特定的文件,Flask不像CGI,其中每個路徑映射到CGI腳本。你仍然可以將你的視圖放到不同的Python模塊中,但是這與Flask的路由沒有任何關係。只要@app.route()修飾符被執行(註冊路由和查看功能),當請求進來時,Flask可以再次找到它。

您可以添加變量規則,其中匹配的URL路徑的部分可以包含多於只是固定文本:

@app.route('/user/<username>') 
def show_user_profile(username): 
    # show the user profile for that user 
    return 'User %s' % username 

這裏的路徑可以是/user/之後的文字,所以http://example.com/user/foobar將導致串foobar在傳遞給show_user_profile()視圖。

您可以在Flask Quickstart中閱讀有關路由的更多信息。

+0

和在這個例子的情況下,我必須添加這個? 'href = http:// localhost/_add_numbers id = calculate>計算服務器端' – yvonnezoe

+0

opps不,它不工作:( – yvonnezoe

+0

@yvonnezoe:確切的點擊該鏈接會告訴瀏覽器加載'http: // localhost/_add_numbers「,這會導致Flask被要求輸入該URL,然後將'/ _add_numbers'與配置的路由匹配並找到一個視圖函數 –

0

瓶使用了Apache的國防部WSGI,

你必須安裝下列軟件包,如果你沒有他們已經:

中的tasksel 要一次 須藤安裝多個包apt-get安裝中的tasksel

燈服務器 LAMP服務器(Apache,MySQL和) 的tasksel須藤安裝燈服務器

APACH e「mod_wsgi」 啓用Apache模塊「mod_wsgi」 - sudo apt-get install libapache2-mod-wsgi - sudo a2enmode wsgi - sudo/etc/init。d/Apache2的重啓

瓶 瓶框架來實現REST風格的web服務 sudo易於得到安裝python-PIP畫中畫 安裝瓶

,那麼你必須添加端口在ports.conf您的網站: sudo的納米/etc/apache2/ports.conf

了NameVirtualHost *:5000

聽5000

然後創建一個引導這個端口到您的文件一個新的WSGI文件:然後最後

<VirtualHost *:5000> 
    ServerName your_server_name 

    Options Indexes FollowSymLinks MultiViews ExecCGI 

    AddHandler wsgi-script .wsgi 


    WSGIDaemonProcess pmvc user=www-data group=www-data threads=5 
    WSGIScriptAlias//path/to/project/server.wsgi 

    <Directory /path/to/project/> 
     Allowoverride All 
     Options Indexes FollowSymLinks MultiViews ExecCGI 
     WSGIProcessGroup your_server_name 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

其中Web服務進行編碼創建server.wsgi文件包含以下你的Python文件旁邊:

import sys 

current_path = '/path/to/project' 

if not current_path in sys.path: 
    sys.path.append(current_path) 

from your_python_file_name import app as application 
+0

這不會回答這個問題。** Flask **路由工作?Flask如何知道要調用什麼視圖 –

+0

注意Flask可以運行自己的服務器(儘管只適合開發),並且可以在任何WSGI服務器下運行。 ? –

+0

這太複雜了...... @ _ @但是謝謝你! – yvonnezoe