Flask Nedir?
Flask, Python’da web uygulamaları geliştirmek için kullanılan bir mikro çerçevedir. Hafif, esnek ve kullanımı kolaydır. Flask, web uygulamaları geliştirmek için gereken temel özellikleri sağlar ve geliştiricilere kendi uygulamalarını oluşturma özgürlüğü verir.
Flask’ın Özellikleri
- Hafiftir ve kurulumu kolaydır.
- Esnektir ve geliştiricilere kendi uygulamalarını oluşturma özgürlüğü verir.
- Kullanımı kolaydır ve öğrenmesi hızlıdır.
- Geniş bir topluluğa sahiptir ve birçok kaynak mevcuttur.
- Ücretsiz ve açık kaynaklıdır.
Flask’ın Kullanım Alanları
Flask, çeşitli web uygulamaları geliştirmek için kullanılabilir. Bunlardan bazıları şunlardır:
- Bloglar
- E-ticaret siteleri
- İçerik yönetim sistemleri
- Sosyal medya platformları
- Mobil uygulamalar
- API’ler
Flask ile Nasıl Başlanır?
Flask ile başlamak için aşağıdaki adımları izleyebilirsiniz:
- Python’ı bilgisayarınıza yükleyin.
- Flask’ı pip komutuyla yükleyin:
pip install Flask
- Bir Flask uygulaması oluşturun:
“`
from flask import Flask
app = Flask(name)
@app.route(‘/’)
def hello_world():
return ‘Hello, World!’
if name == ‘main‘:
app.run()
“`
- Uygulamanızı çalıştırın:
python app.py
- Uygulamanıza bir web tarayıcısı üzerinden erişin:
http://localhost:5000
Flask’ta Rota Oluşturma
Flask’ta rota oluşturmak için @app.route()
dekoratörünü kullanabilirsiniz. Bu dekoratör, bir fonksiyonu belirli bir URL’ye eşler. Örneğin, aşağıdaki kod bir hello_world()
fonksiyonunu /
URL’sine eşler:
@app.route('/')
def hello_world():
return 'Hello, World!'
Flask’ta Görünüm Oluşturma
Flask’ta görünüm oluşturmak için render_template()
fonksiyonunu kullanabilirsiniz. Bu fonksiyon, bir HTML şablonunu işler ve bir HTTP yanıtına dönüştürür. Örneğin, aşağıdaki kod hello_world.html
adlı bir şablonu işler ve bir HTTP yanıtına dönüştürür:
@app.route('/')
def hello_world():
return render_template('hello_world.html')
Flask’ta Veritabanı Kullanımı
Flask’ta veritabanı kullanmak için SQLAlchemy adlı bir ORM (Nesne İlişkisel Eşleme) kütüphanesi kullanabilirsiniz. SQLAlchemy, veritabanı ile Python nesneleri arasında bir köprü görevi görür. Örneğin, aşağıdaki kod bir User
adlı bir model oluşturur ve bu modeli bir veritabanına kaydeder:
“`
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
user = User(username=’admin’, password=’password’)
db.session.add(user)
db.session.commit()
“`
Flask’ta Form İşleme
Flask’ta form işlemek için request
nesnesini kullanabilirsiniz. request
nesnesi, istemciden gelen HTTP isteği hakkında bilgi içerir. Örneğin, aşağıdaki kod bir formdan gelen verileri işler ve bir veritabanına kaydeder:
“`
from flask import request
@app.route(‘/register’, methods=[‘POST’])
def register():
username = request.form[‘username’]
password = request.form[‘password’]
user = User(username=username, password=password)
db.session.add(user)
db.session.commit()
return redirect(url_for('login'))
“`
Flask’ta Dosya Yükleme
Flask’ta dosya yüklemek için request.files
nesnesini kullanabilirsiniz. request.files
nesnesi, istemciden gelen dosyaları içerir. Örneğin, aşağıdaki kod bir formdan gelen dosyayı işler ve bir sunucuya kaydeder:
“`
from flask import request
@app.route(‘/upload’, methods=[‘POST’])
def upload():
file = request.files[‘file’]
file.save(‘uploads/’ + file.filename)
return redirect(url_for('home'))
“`
Flask’ta E-posta Gönderme
Flask’ta e-posta göndermek için Flask-Mail
adlı bir uzantı kullanabilirsiniz. Flask-Mail
uzantısı, e-posta göndermek için gereken özellikleri sağlar. Örneğin, aşağıdaki kod bir e-posta gönderir:
“`
from flask_mail import Mail, Message
mail = Mail(app)
@app.route(‘/send_email’)
def send_email():
msg = Message(‘Hello, World!’, sender=’[email protected]’, recipients=[‘[email protected]’])
msg.body = ‘This is a test email.’
mail.send(msg)
return redirect(url_for('home'))
“`
Flask’ta API Oluşturma
Flask’ta API oluşturmak için Flask-RESTful
adlı bir uzantı kullanabilirsiniz. Flask-RESTful
uzantısı, API oluşturmak için gereken özellikleri sağlar. Örneğin, aşağıdaki kod bir API oluşturur:
“`
from flask_restful import Api, Resource
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {‘hello’: ‘world’}
api.add_resource(HelloWorld, ‘/hello’)
“`
Flask’ta Güvenlik
Flask’ta güvenlik sağlamak için Flask-Security
adlı bir uzantı kullanabilirsiniz. Flask-Security
uzantısı, kullanıcı yönetimi, oturum yönetimi ve yetkilendirme gibi güvenlik özellikleri sağlar. Örneğin, aşağıdaki kod Flask-Security
uzantısını kullanarak bir kullanıcı oluşturur:
“`
from flask_security import SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
class Role(db.Model, RoleMixin):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
@app.route(‘/register’, methods=[‘POST’])
def register():
username = request.form[‘username’]
password = request.form[‘password’]
user = User(username=username, password=password)
user_datastore.create_user(user)
return redirect(url_for('login'))
@app.route(‘/login’, methods=[‘POST’])
def login():
username = request.form[‘username’]
password = request.form[‘password’]
user = user_datastore.find_user(username=username)
if user and user_datastore.check_password(user, password):
login_user(user)
return redirect(url_for('home'))
return redirect(url_for('login'))
@app.route(‘/logout’)
@login_required
def logout():
logout_user()
return redirect(url_for(‘home’))
“`
Flask’ta Uluslararasılaştırma
Flask’ta uluslararasılaştırma sağlamak için Flask-Babel
adlı bir uzantı kullanabilirsiniz. Flask-Babel
uzantısı, farklı dillerde içerik oluşturmak ve görüntülemek için gereken özellikleri sağlar. Örneğin, aşağıdaki kod Flask-Babel
uzantısını kullanarak bir web uygulamasını uluslararasılaştırır:
“`
from flask_babel import Babel
babel = Babel(app)
@babel.localeselector
def get_locale():
return request.accept_languages.best_match(app.config[‘LANGUAGES’])
@app.route(‘/’)
def index():
return render_template(‘index.html’, locale=get_locale())
“`
Flask’ta Test Etme
Flask’ta test etmek için Flask-Testing
adlı bir uzantı kullanabilirsiniz. Flask-Testing
uzantısı, web uygulamalarını test etmek için gereken özellikleri sağlar. Örneğin,