2016-02-07 115 views
0

我有下面的代碼,似乎沒有註冊路線。燒瓶沒有註冊路線

#!/usr/bin/python 

import os,sys,json 
from flask import Flask, url_for 

class Foo: 

    server = Flask(__name__) 
    mountpoint = "/api" 

    def __init__(self,startup="run",config="",mountpoint="/api"): 
     self.mountpoint = mountpoint 
     self.startup = startup 
     self.server = server 

    @server.route("/test") 
    def test(self): 
     return "Hello world!" 

    def getEndpoints(self): 
     server = self.server 
     with server.test_request_context(): 
      print url_for('test') 

    def start(self,**kwargs): 
     getattr(self.server,self.startup)(**kwargs) 


if __name__ == "__main__": 
    mon = Foo() 
    mon.getEndpoints() 
    mon.start(host='0.0.0.0',debug=True) 

如果我不叫「getEndpoints」的東西似乎運行得很好,但/測試返回404當調用「getEndpoints」它返回一個生成錯誤。我猜這是簡單的像Why am I getting 404 error in Flask?或某些範圍相關的東西,但我還是比較新的python,所以我有點失落,問題可能是什麼。

+0

這是什麼編碼? Flask doc從不提供與您的相同的教程代碼。 – Tony

回答

0

我在我的機器上運行了你的代碼,發現從你的測試函數導致/測試中移除self參數工作正常。根據我的經驗,您的視圖函數的參數是由裝飾器傳入的值。

查看Flask docs on routing

+0

你能提供一個例子嗎?我已經閱讀了燒瓶文檔,並據我所知,我正在做的一切正確。 「自我」作爲參數傳遞是因爲它是一種類方法。去除「自我」似乎對我沒有幫助。仍在收到「werkzeug.routing.BuildError:('test',{},None)」 – smokes2345

+0

也許您在尋找[Blueprints](http://flask.pocoo.org/docs/0.10/blueprints)或[Application Factories ](http://flask.pocoo.org/docs/0.10/patterns/appfactories/)?我不幸遇到了他們,但我知道他們可以用來製作Flask應用程序的多個實例。對不起,如果這不是很有幫助。 –

+0

[此擴展程序](https://pythonhosted.org/Flask-Classy/)也看起來很有希望,並且與您編寫的代碼類似。 –