Turkish Flask Tutorial - Beginning of Minimalize

in #utopian-io7 years ago (edited)

Hi guys. I am a django developer in my real life, some of you know me. I met a friend yesterday in İstanbul. He works in a firm that writes facebook games. He told me about the flask. In short I summarize what I understand, the flask is a python-related framework, and it has decided to switch to the flask when it writes django itself but it is insufficient when the file sizes are big and they want to further minimize the projects. What they do is write the games we all play on facebook. As these games work on a server and continue to meet their so many users like millions, the project dimensions are even more performance-driven thanks to the flask, and in fact the library that we haven't used or will not be able to work with in django is out of the picture. I was interested too. I want to be able to compare with django and maybe to be a better flask user with you in this process. I hope it helps. Let's start learning.

Flask Python ile yazılmış bir web uygulaması çerçevesidir. Pocco adında uluslararası bir Python meraklıları grubunu yöneten Armin Ronacher bunu geliştiriyor. Flask, Werkzeug WSGI araç setini ve Jinja2 şablon motorunu temel alır. Her ikisi de Pocco projeleridir.


imagesource

Django için de kullanmış olduğumuz modüler yapıyı sağladığımız virtualenv'ımızı (sanal python ortamımız) öncelikle aktif ediyoruz arkadaşlar. Bir python framework'ü olduğu için de pip komutu ile sanal sürücümüze kurulumu yapacağız. Şimdi birlikte aktif ettiğimiz sanal sürücümüz için aşağıdaki kodu çalıştıralım ve kurulumumuzu gerçekleştirmiş olalım.

pip install Flask

Evet kurulumu tamaladıktan sonra flask testi yapmaya geldi sıra, ilk flask kodumuzu yazacağız arkadaşlar, burada her şey python unutmayalım. Favori bir editörünüz ile ilk_uygulamam.py dosyasını yaratalım.

vi ilk_uygulamam.py  /// nano ilk_uygulamam.py

Dosyamız içerisine aşağıdaki satırları yazarak python kodumuzu yaratalım. Göreceğiniz üzere aslında her şey bir python kodundan ibaret olacak.

from flask import Flask
app = Flask(__name__)
@app.route("/")
def ilk_uygulamam():
    return "Her sey bir python kodundan ibaret"

Evet şimdi ilk_uygulamam dosyamızı kaydedelim ve komut satırına shell kabuğuna geri dönelim arkadaşlar. Komut satırında nasıl kolaycayazdığımız kodu çalıştırabileceğimizi hemen görelim, aşağıdaki kodu yazdığınızda dosyanızın çalıştığını ve çıktı verdiğini göreceksiniz.

FLASK_APP=ilk_uygulamam.py flask run

Eğer istersek flask_app tanımlamasını dosya içerisine de yazabiliriz, bu şekil yaptığımızda komut satırımızdadirek bir python dosyası çalıştırıyor gibi dosyamızı çalıştırabileceğiz.

python ilk_uygulamam.py

hata yakalama modunu aktif etmek istersek de uygulamamızı çalıştırırken parantez içerisinde debug modu şeklinde belirtmemiz yeterli olacaktır.

uygulama_adı.run(hata_yakalama_modu_aktif) tarzında.

Aynı djangodaki gibi bu uygulamamız şuan yerelde çalışıyor arkadaşlar, öyleyse localhost üzerinden vermiş olduğu çıktıda bakalım gerçekten de yapmak istediğimiizi başarabilmiş miyiz, favori web tarayıcınızda ilk_uygulamam.py komutunu çalıştırdığımızdaki konsol çıktısını kopyalayıp yapıştıralım. Görmüş olacağınız şey fonksiyonda geriye döndürdüğümüz "her şey bir python kodundan ibaret" mesajı olacaktır. Hemen bakalım.

Peki djangodaki gibi farklı url'ler altında bir bu dosyayı çalıştırmak isteseydik ne yapmamız gerekecekti, kodumuzda farkettiyseniz fonksiyonun başına bir router yani yönlenidirici ifade tanımladık "/" bu ifade yerel sunucumuzda hangi url den ulaşacağımız anlatıyor bize. Yani eğer buraya home dizini olarak kullandığımız "/" ifadesi yerine başka bir karakter dizisi girseydik, kodumuzu o url altında bize sunulacaktı.

route: url yonlendirmesini atayacagimiz degisken olarak dusunulebilir.
uygulama_adi.route("/") ana dizin yerel sunucumuz icin
uygulama_adi.route("/dogancankilment")
uygulama_adi.route("/utopian-io/dogancankilment")

Hatırladıysanız django üzerinde de urls.py yapılandırması yapıyorduk, orda da hangi fonksiyonu çağırdığını ve fonksiyon da hangi şablonu çağırdığını biliyordu, burada harici bir dosya yazmak yerine direk yazmış olduğumuz kodun içerisinde çağrılan fonksiyonun üzerine yönlendirici tanımlayarak halletmiş olduk. Hemen bir örnek ile uygulayalım. Url kısmına kendi adınızı yazmayı deneyin bakalım. Tarayıcıda yerel sunucumuz / kendi adımız yazdığımızda aynı mesajı görebilmek mümkün olabilecek mi test edelim.

# url ozellestirme, her fonksiyon icin ayri url
uygulama_adimiz.yonlendirme_fonksiyonu(/dogancankilment)
127.0.0.1/dogancankilment

Evet arkadaşlar gördüğünüz üzere direk yerel sunucumuzun ana sayfası olan "/" url'ine istek yaptığımızda tarayıcımızda sayfa bulunamadı hatası aldık. Fonksiyonda kendi adımızı tanımlamıştık, kendi adımızın yazılı olduğu url'de gördüğünüz üzere fonksiyon çalıştı ve mesajımızı bize görüntüledi. Peki alt url yazdığımızda da aynısı olacak mıydı hemen deneyelim.

# alt url tanimlama
uygulama_adimiz.yonlendirme_fonksiyonu(/utopian-io/dogancankilment)
127.0.0.1/utopian-io/dogancankilment

Sunucu olarak bakıldığında django ile çok benzer olmasına rağmen ekstra dosyalardan kurtulmuş durumdayız. Yapmak istediğimiz işlemlerin hepsini tek bir uygulama dosyası içerisinde toparlayıp, aynı django'da başardığımız yönlendirme url'lerimiz fonksiyonlarımız şablonlarımız veritabanımız gibi tüm işlemlerimizi bir araya toplamayı başarmış bulunuyoruz.

Flask bize django uygulamasından da daha küçük boyutlarda sonuçlar ile dönüyor ve işimize yaramayacak tüm dosyalardan bizi kurtarıyor arkadaşlar. Flask öğrenme sürecimiz devam edecek ve belli mi olur belki biz de bir gün milyon hit alan bir oyun uygulamasını flask ile yazıp sunucu maliyetimizi çok düşüğe indirgemiş oluruz.

Yazıma flask'ın bize kazandırdığı avantajları anlatarak son vermek istiyorum. Bir sonraki yazımda görüşmek üzere.

Avantajlar

  • Python kodu yazıyoruz.
  • Herhangi bir metin düzenleme editörü kullanmak yeterli olacaktır.
  • Django aşina iseniz yada daha önceden kullandıysanız kavramlara alışmanız çok kolay olacaktır.
  • Gereksiz dosyalardan kurtuluyoruz.
  • Görev parçacıkları olan;
    -- urls.py
    -- views.py
    -- models.py
    -- admin.py vs.. gibi modülleri tek bir python kodunda (dosyamızda) toplayıp, her tanımlamamızı bu koda ekleyebiliyoruz.
  • İşimiz sonlandığında uygulama boyutu çok küçük olacak.
  • Sunucu maliyetinden yüksek kazanç sağlayacağız.
  • Uygulamamızın yoğun istek altındaki cevap süresi çok hızlı olacak.



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

hocam güzel psylaşımlar
Bizlere de destek olurmusunuz.

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Hey @dogancankilment I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 57249.56
ETH 2352.09
USDT 1.00
SBD 2.38