weppy Python Web Framework

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

 

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.