Dinamik Routes

Her gün kullandığımız sitelerin URL'lerinin nasıl oluşturulduğuna dikkat edersek, birçoğunun değişken bölümleri olduğunu fark ederiz. Örneğin, Facebook profil sayfanızın URL'si https://www.facebook.com/<your-name> biçimindedir, kullanıcı adınızı içerir ve her kullanıcı için farklıdır. Flask, app.route dekoratöründe özel bir syntax kullanarak URL türlerini destekler. Takip eden örnek, dinamik komponenti olan bir route tanımlar.

@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, {}!</h1>'.format(name)

URL' in angle bracket içindeki kısım "name" dinamik bölümdür.

Ancak yukarıdaki kod bloğunda dikkat edilmesi gereken bir nokta vardır. Tarayıcıda sadece /user URL'i girildiğinde hata mesajı alınacaktır. Nedeni route'a bağımlı user(name) view fonksiyonunun parametre istemesidir. Bu hatayla karşılaşmamak için route dekoratörüne bağımlı view fonksiyonun parametresi default olarak verilmeli ve /userURL'ine karşılık yeni bir route oluşturulmalıdır.

@app.route('/user/')
@app.route('/user/<name>')
def user(name='anonymous'):
    return '<h1>Hello, {}!</h1>'.format(name)

Bu sayede view fonksiyonuna birden fazla route bağlanabildiğide görülmektedir.

Dinamik route'u kavramak için bir kez daha basit bir uygulama ile ele alalım. Sabit bir route içeren uygulamayı takip eden örnekte inceleyelim.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

Dinamik olan ikinci bir route ekleyelim.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'
    
@app.route('/user/<name>')
def user(name): 
    return '<h1>Hello, {}!</h1>'.format(name)

Tarayıcıda URL ziyaret edildiğinde, URL'de verilen adı içeren bir karşılama mesajı görülür. Dinamik route'u test etmek için sunucunun çalıştığından emin olun ve ardından http://localhost:5000/user/Yavuz gibi sonunda adınızı içeren URL'i girin. URL'de farklı adlar kullandıkça kullanılan ada göre karşılama mesajları görüntülenecektir.

Route'daki dinamik komponentler default olarak stringdir ancak farklı tiplerde olabilir. Örneğin, /user/<int:id> yalnızca id dinamik kısmında integer bulunan URL'lerle eşleşir, /user/123 gibi. Flask routelar için string, int, float ve path tiplerinide destekler. Path tipi, string tipinin aksine, eğik slashler ekleyebilen özel bir string türüdür.

Last updated