Merhaba. Bu yazıda size weppy Python Web Framework hakkında ufak tefek bilgiler vermek istiyorum. Bir önceki yazıda PouchDB Senkronizasyonu hakkında bilgi vermiştim.
weppy Python Web Framework
Giriş yazısından da anlaşıldığı gibi weppy neredeyse Flask ile aynı hatta temel intro kodlarını versem hangisi Flask hangisi weppy anlayamazsınız. Tabi bunun nedenini framework’ün yaratıcısı Giovanni Barillari “Flask beni baya etkiledi” diyerek açıklamış. Bu Framework geliştirilirken baya zevk almış. Tıpkı Flask frameworkte olduğu gibi burada da kendi pluginlerinizi geliştirebiliyorsunuz.
Bunları Extensions sayfasından bulabilirsiniz. Dokümantasyona bakıldığında herhangi bir framework deneyimi olmayanlara anlatır gibi anlatılmış bir yapıya sahip olduğu açık.
Kurulum
Kurulum için her zaman olduğu gibi virtualenv kullanacağız. Proje dizinimize bu yazıyla alakalı olduğu için “weppy” adını verdiğimizi varsayalım:
mkdir weppy cd weppy virtualenv venv --no-site-packages
Öncelikle virtualenv ile geliştirme ortamımızı kurduk. Şimdi aktif edelim:
. venv/bin/activate
Ardından şu basit komutla weppy kurulumunu gerçekleştirelim:
pip install weppy
İlk Projemiz
İlk projemiz için main.py adında bir dosya oluşturalım. Bu dosyanın içeriği şöyle olsun:
from weppy import App app = App(__name__) @app.route("/") def hello(): return "Hello World" if __name__ == '__main__': app.run()
Ardından komut satırından
python main.py
komutunu verelim. Sistem başarılı bir şekilde çalıştıysa http://127.0.0.1:8000 linkine gidelim. Karşımızda Hello World yazısını gördüysek ilk projemizi başarıyla gerçekleştirdik demektir. Biraz daha detaylara dalalım.
Routing Yapısı
Yine burada flask benzerliği öne çıkmakta. Routelar şöyle tanımlanıyor:
@app.route("/about") def about(): return "My name is Sheldon Lee Cooper" @app.route("/from/<str:imfrom>") def imfrom(imfrom): return "Hi I'm from %s" % imfrom @app.route('/age/<int:age>') def age(age): return "My age: %i" % age @app.route('/post', methods=['POST']) def post_article(): return "Article post"
Bir de bu tip güvenli veri türleri arasında float, date(yyyy-mm-dd), alpha ve any içeren türler var. Belki karmaşık gelen alpha ve any olabilir. Alpha sadece ve sadece metinsel verileri içeriyor. Buna 1 ve 2 gibi rakamlar ya da dash gibi karakterler de dışarıda kalıyor. Any ise önüne gelen her veriyi kabul ediyor kabaca.
İsteğe bağlı parametreler de verebiliyorsunuz. Örneğin bir sitede sadece profile adında bir endpoint ziyaret ediliyor. Bazı durumlarda da profile/123 ziyaret ediliyor. İşte bu şarta bağlı yöntem de düşünülmüş:
@app.route('/profile(/<int:user_id>)?') def profile(user_id): if user_id: return "This is %i's profile" % user_id else: return "This is my profile"
Kullanılan static file, url builder, template structure, model, mvc pattern, package pattern, json, xml, forms, authorization, validations, orm gibi konulara yani web2py tarafında bilinen adıyla DAL kavramlarına farklı bir yazıda girebilirim.
Uzun yazılar sıkıcı olacağı için burada kesiyorum. Zaman ayırıp okuduğunuz için teşekkür ederim. Bu yazıda weppy Python Web Framework hakkında ufak da olsa bir bilgi sahibi olabildik.