2016-11-15 4 views
-1

Ich habe diese etwas gruselig Datei mit Blick:Kolben Struktur im Allgemeinen App

from app import app 
from flask import request 

inspection_handler = None 
data_handler = None 
repeat_handler = None 

@app.route(START_URL + 'inspection/', methods=['GET']) 
def inspection(): 
    return inspection_handler.update(request) 


@app.route(START_URL + 'data/', methods=['GET']) 
def data(): 
    return data_handler.update(request) 


@app.route(START_URL + 'repeat/', methods=['GET']) 
def repeat(): 
    return repeat_handler.update(request) 

Ein weiteres Modul hat Code wie folgt aus:

from app.handlers.data.data_handler import DataHandler 
import app.views.monitoring as monitoring 

monitoring.data_handler = DataHandler() 

Ich glaube, ich wirklich das erste Modul verbessern kann, aber ich don Ich weiß nicht, wie ich es richtig machen soll. Kannst du mir helfen ?

+0

https://github.com/pallets/flask/wiki/Large-app-how-to –

+0

Was ist damit so gruselig ist? Außerdem, was versuchst du * zu verbessern *? –

+0

Ich habe den gemeinsamen Wert von 'url' -' START_URL' und wenn ich eine neue Route hinzufüge, wird das Modul etwas größer und unlesbar. Kann ich den Polymorphismus besser nutzen? – faoxis

Antwort

2

Werfen Sie einen Blick auf Kolben blueprints, und wie bereits empfohlen Flask - Structuring Large Apps

from app import app 
from flask import Blueprint, request 


handlers = { 
    'inspection': None, 
    'data': None, 
    'repeat': None 
} 


handler_page = Blueprint(START_URL, __name__) 
# Ideally register this blueprint where you registered your app 
app.register_blueprint(handler_page) 


@handler_page.route('/<string:handler_type>', methods=['GET']) 
def handler_view(handler_type): 
    try: 
     curr_handler = handlers[handler_type] 
    except KeyError: 
     return "Not found.", 404 
    return curr_handler.update(request) 
+1

Oh! Das ist großartig! Aber was kann ich tun, wenn ich mehrere "START_URL" habe? – faoxis

+0

@faoxis Sie können mit den 'Request'-Methoden, wie' request.path' und 'request.url' einige clevere Refactorings durchführen. Rufen Sie dann basierend auf dem START_URL die entsprechende Funktion aus einem Wörterbuch auf. Oder Sie können einfach * mehrere * Blaupausen registrieren. Auch das ist fast kein Problem. Denken Sie nicht über Strukturierung, bevor Sie in schwere Probleme geraten. Repariere nicht, was nicht kaputt ist :) – oxalorg