Birbirinden farklı komutlarla büyük bir CLI uygulamasına sahip olduğumu düşünün (örneğin, görüntü-magick gibi). Tıkla CLI uygulamaları ile Flask gelen "uygulama fabrika" desen kullanmak mümkün mü?
Ben modüller halinde bu uygulamayı organize etmek istedik ve vs Yani, bir yerde bir anaclick.group
olacağını:
from main import my_app
# command_x.py
@my_app.command()
def command_x():
pass
: bir komut tanımlamak her modülde alınabilir
#main.py file
@click.group()
def my_app():
pass
if __name__ == "__main__":
my_app()
Sorun şu ki, main.py
dosyası command_x.py
hakkında hiçbir şey bilmediğinden ve temel bölümü çağırmadan önce içe aktarmam gerekeceğinden, döngüsel bir içe aktarma sorunuyla karşılaşıyorum.
Bu, Flask'ta da olur ve genellikle uygulama fabrika düzeniyle ilgilenir. Genellikle görünümler önce oluşturulan uygulamaya sahip olacaktır:
# blueprints.py
blueprint = Blueprint(yaddayadda)
@blueprint.route("/")
def view_x():
pass
Ve nasıl oluşturulacağını bilen bir fabrika yapmak: Eğer planları arasında "kayıt" erteleme uygulaması fabrika deseni olarak
app = Flask("my_app")
@my_app.route("/")
def view_x():
pass
if __name__ == "__main__":
app.run()
Uygulamanın ve planları kayıt:
#app_factory.py
from blueprints import view_x
def create_app():
app = Flask()
view_x.init_app(app)
return app
ve sonra uygulamayı çalıştırmak için bir komut dosyası oluşturabilirsiniz:
#main.py
from app_factory import create_app
if __name__ == "__main__":
app = create_app()
app.run()
Benzer bir desen Tıklamada kullanılabilir mi? Tek tek komutlar olan "denetleyicileri" kaydeddiğim bir "tıklama uygulaması" (belki de click.Group
'u uzatabilir miyim) oluşturabilir miyim?