2017-03-05 51 views
1

我現在正在像下面那樣構建Flask應用程序。來自其他文件的燒瓶路由器

myserver 
- server.py 
- myapp 
-- urls.py 
-- models.py 
-- views.py 
-- consts.py 

而我的代碼在這裏。

server.py

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 

# Flask App 
application = Flask(__name__) 

# SQLAlchemy 
application.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:./local.db" 
db = SQLAlchemy(application) 

if __name__ == "__main__": 
    application.run(debug=True) 

urls.py

from server import application 
from . import views 

@application.route('/') 
def version(): 
    return views.version() 

但是當我運行server.py和開放http://localhost:5000/服務器說:404 Not Found

所以我搜索了stackoverflow,我發現了一些關於Blueprint的描述。我製作了一個名爲app的藍圖,如app = Blueprint('app', __name__),並從server.py註冊它,但我得到了AttributeError: module 'urls' has no attribute 'app'

如何在其他文件中定義url路由器?

+0

你打電話給'app',但python不知道'app'是什麼。你忘了還爲'app'添加一個導入嗎?你能發佈更新後的代碼嗎? – FuzzyAmi

+0

@FuzzyAmi我也在'server.py''中加入了這一行myapp import urls'並註冊了藍圖urls.app – kde713

回答

1

這裏的例子是Blueprint。文件的結構:

/project_folder 
    server.py 
    urls.py 
    urls2.py 

server.py:

from flask import Flask 
from urls import urls_blueprint 
from urls2 import urls2_blueprint 


app = Flask(__name__) 
# register routes from urls 
app.register_blueprint(urls_blueprint) 
# we can register routes with specific prefix 
app.register_blueprint(urls2_blueprint, url_prefix='/urls2') 

if __name__ == "__main__": 
    app.run(debug=True) 

urls.py:

from flask import Blueprint 

urls_blueprint = Blueprint('urls', __name__,) 


@urls_blueprint.route('/') 
def index(): 
    return 'urls index route' 

urls2.py:

from flask import Blueprint 
urls2_blueprint = Blueprint('urls2', __name__,) 


@urls2_blueprint.route('/') 
def index(): 
    return 'urls2 index route' 

運行服務器和開放http://localhost:5000/http://localhost:5000/urls2/

希望這會有所幫助。

+0

我的問題與blueprint無關,但是謝謝你的回答:) – kde713

+0

@RenoV祝你好運;) –