2012-08-16 14 views
69

Moja aplikacja flask zawiera obecnie jeden plik test.py z wieloma trasami i zdefiniowaną trasą main(). Czy jest jakiś sposób, aby utworzyć plik test2.py zawierający trasy, które nie były obsługiwane w test.py?Jak podzielić kolbę na wiele plików py?

@app.route('/somepath') 
def somehandler(): 
    # Handler code here 

Obawiam się, że istnieje zbyt wiele tras w test.py i chciałby, aby to tak, że mogę uruchomić python test.py, które będą również odebrać trasy na test.py tak, jakby były częścią tego samego pliku. Jakie zmiany muszę wprowadzić w test.py i/lub dołączyć do test2.py, aby to zadziałało?

Odpowiedz

77

Można użyć zwykłej struktury pakietu Python podzielić aplikację na kilka modułów, see the Flask docs.

Jednak

Kolba wykorzystuje koncepcję plany wytwarzania komponentów aplikacji i wspieranie wspólnych wzorców w aplikacji lub w różnych aplikacjach.

Można utworzyć podkomponencie swojej aplikacji jako plan w osobnym pliku:

simple_page = Blueprint('simple_page', __name__, template_folder='templates') 
@simple_page.route('/<page>') 
def show(page): 
    # stuff 

a następnie używać go w głównej części:

from yourapplication.simple_page import simple_page 

app = Flask(__name__) 
app.register_blueprint(simple_page) 

Plany mogą również pakiet konkretnych zasobów: szablony lub pliki statyczne. Proszę zapoznać się z Flask docs dla wszystkich szczegółów.

+0

W jaki sposób możemy mieć trasy tras w pliku inne niż __init__ tego projektu? – divyenduz

2

Dzielenie aplikacji na projekty to świetny pomysł. Jeśli jednak to nie wystarczy i jeśli chcesz podzielić sam Blueprint na wiele plików py, to jest to również możliwe przy użyciu zwykłego systemu importowania modułów Python, a następnie przechodzenie przez wszystkie trasy, które zostaną zaimportowane z innych plików .

stworzyłem GIST z kodem dla tej operacji:

https://gist.github.com/Jaza/61f879f577bc9d06029e

O ile mi wiadomo, jest jedynym możliwym sposobem, aby podzielić się planem w tej chwili. To nie jest możliwe, aby stworzyć „sub-ideowych” w kolbie, choć to kwestia otwarta z wielu dyskusji na ten temat:

https://github.com/mitsuhiko/flask/issues/593

Ponadto, nawet gdyby to było możliwe (i to prawdopodobnie do-stanie przy użyciu niektóre fragmenty z tego wątku), pod-plany mogą i tak być zbyt restrykcyjne dla twojego przypadku użycia - np. jeśli nie chcesz, aby wszystkie trasy w podm module miały ten sam pod-przedrostek adresu URL.

Powiązane problemy