Flask ile çok basit bir web sayfası oluşturmak

Ali Orhun Akkirman - Mar 22 '20 - - Dev Community

Bu yazıda Flask'ın klasik anlatımından farklı bir giriş yapacağım. Öncelikle Flask minimal bir python web mikroframework'u olarak düşünebiliriz. Bir web sunucusu değildir. Kendi içerisinde sadece geliştirme sürecinde kullanacağınız basit bir web sunucusu bulunmaktadır fakat asıl işi bu değildir.

Aslında ihtiyacı şu şekilde belirlemek uygun olacaktır. Python ile bir servis yazdınız fakat bu servis işletim sistemi üzerinde çalışıyor. Bu servis çıktılarını HTTPS üzerinden görmek veya yönetmek için bunun gibi bir framework kullanmanız gerekmektedir. Kendi içerisinde eklenti mantığı vardır ve görsel temalarını Jinja isminde bir altyapı ile sağlamaktadır.

Yazının başında kendi içerisinde çok temel bir web sunucusu olduğunu bahsettim fakat bunu kullanmak yerine ilerleyen yazılarda anlatacağım Gunicorn isimli bir web sunucsunu kullanacağız. O zamana kadar basit web sunucusu ile devam edeceğiz. Aslında gunicorn da basit bir sunucu olup daha detaylı bir sunucu kullanmak isterseniz nginx ilişkisini de yapmak gerekecektir.

Konumuza gelirsek geliştirme ortamı için python'ın paket yöneticisi pip ve python için sanal ortam oluşturmada kullanılacak virtualenv gibi kavramlar bulunmakta. Fakat ben bu yazımda bunlara değinmeyeceğim ve Pardus ve Debian'ın paket yönetim sisteminde bulunan paketlerle ilerleyeceğim.

Bunun için aşağıdaki paketi indirmeniz yeterlidir:

sudo apt install python3-flask
Enter fullscreen mode Exit fullscreen mode

Bu şekilde Python3 için flask kütüphanesini kurmuş oluyorsunuz.

Şimdi yeni bir klasör oluşturup uygulamanızı oluşturabiliriz. İçerisinde de aşağıdaki gibi klasörler ve dosyaları oluşturmanız belirli bir standart için uygun olacaktır.

mkdir -p ~/proje01/app
mkdir -p ~/proje01/templates
Enter fullscreen mode Exit fullscreen mode

Ayrıca iki dosya oluşturarak temel bir sayfa oluşturmuş olacağız.

proje01/app klasörü altında "__init__.py" isimli dosya oluşturup içeriği aşağıdaki gibi olmalıdır.

from flask import Flask
app = Flask(__name__)
Enter fullscreen mode Exit fullscreen mode

proje01 klasörü altında "proje_.py" isimli dosya oluşturup içeriği aşağıdaki gibi olmalıdır.

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/')
def merhaba_dunya():
  return 'Merhaba Dünya!'
Enter fullscreen mode Exit fullscreen mode

Bu işlemler sonucunda klasör yapışı aşağıdaki gibi olmalıdır.

proje01/
└── app/
    └── __init__.py
└── templates/
└── proje.py
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra basit web sunucusu dediğimiz sistemde yapıyı yayınlamamız gerekmektedir. Bunun için öncelikle uygulamamızın ana dosyasını FLASK_APP değişkenine atamamız gerekmektedir.

export FLASK_APP=proje.py
Enter fullscreen mode Exit fullscreen mode

aynı oturumda aşağıdaki komutu çalıştırmanız gerekmektedir. Fakat bu komut sadece local makineden erişebilmenize ve SSL'siz http üzerinden haberleşmeye neden olacaktır:

flask run
Enter fullscreen mode Exit fullscreen mode

Uzak sunucudan erişebilmek ve SSL'li bağlantı kurmak için ise aşağıdaki gibi çalıştırabilirsiniz.

flask run --host=0.0.0.0 --cert=adhoc
Enter fullscreen mode Exit fullscreen mode

Bu adımların sonucunda uzak sunucudan https://IPADRESİ:5000/ üzerinden giriş yapılacaktır. http'den yönlendirme ise otomatik olarak açık değildir.

Tüm bu işlemlerin daha detaylandırılmış halini ise daha sonraki yazılarda yazacağım.

Ex nihilo nihil fit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .