2017-01-31 9 views
0

Я пишу спокойный сервер с флягой в python, и я ищу способ создания вложенных ресурсов в разделенных файлах. Например, если у меня есть ресурс с именем Foo и суб-ресурс под названием Bar, вместо того, чтобы писать что-то вроде этого:flask - вложенные ресурсы

demo_app.py:

from flask import Flask 
from flask_restplus import Api, Resource 

app = Flask(__name__) 
api = Api(app) 
name_space = api.namespace('foo') 


@name_space.route('/') 
class Foo(Resource): 
    def get(self): 
     return 'foo' 


@name_space.route('/bar') 
class Bar(Resource): 
    def get(self): 
     return 'bar' 


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

Я хочу написать Foo и Bar в разных файлах:

demo_app.py:

from flask import Flask 
from flask_restplus import Api, Resource 

app = Flask(__name__) 
api = Api(app) 
name_space = api.namespace('foo') 

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

foo.py:

from flask_restful import Resource 
from Receiver.demo_app import name_space 
@name_space.route('/') 
class Foo(Resource): 
    def get(self): 
     return 'foo' 

bar.py:

from flask_restful import Resource 
from Receiver.demo_app import name_space 
@name_space.route('/bar') 
class Bar(Resource): 
    def get(self): 
     return 'bar' 

Но когда я пишу это таким образом, я получаю:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<title>404 Not Found</title> 
<h1>Not Found</h1> 
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p> 

Как я могу соединиться между этими классами? Есть ли другой способ писать вложенные ресурсы?

ответ

0

foo.py и bar.py не вступают в силу, если они не импортированы в остальную часть вашего кода. Вам нужно добавить в demo_app.py:

from . import foo, bar 

Это использование циркулярных импорта такой же, как рекомендуемый подход для раскалывается ссылки на app; ср http://flask.pocoo.org/docs/0.12/patterns/packages/.

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

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