> For the complete documentation index, see [llms.txt](https://yavuzalikorkut.gitbook.io/flask/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yavuzalikorkut.gitbook.io/flask/flaskin-temel-yapilari-1/dinamik-routes.md).

# 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.

```python
@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.

{% hint style="info" %}
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 `/user`URL'ine karşılık yeni bir route oluşturulmalıdır.

```python
@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.
{% endhint %}

##

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.

```python
from flask import Flask
app = Flask(__name__)

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

Dinamik olan ikinci bir route ekleyelim.

```python
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.
