Flask - Değişken Kurallar
Kural parametresine değişken parçalar ekleyerek dinamik olarak bir URL oluşturmak mümkündür. Bu değişken bölüm olarak işaretlenmiştir<variable-name>. Kuralın ilişkili olduğu işleve bir anahtar kelime argümanı olarak aktarılır.
Aşağıdaki örnekte, kural parametresi route() dekoratör içerir <name> URL'ye eklenen değişken bölüm ‘/hello’. Bu nedenle, eğerhttp://localhost:5000/hello/TutorialsPoint olarak girilir URL tarayıcıda, ‘TutorialPoint’ tedarik edilecek hello() bağımsız değişken olarak işlev görür.
from flask import Flask
app = Flask(__name__)
@app.route('/hello/<name>')
def hello_name(name):
return 'Hello %s!' % name
if __name__ == '__main__':
app.run(debug = True)
Yukarıdaki komut dosyasını farklı kaydedin hello.pyve Python kabuğundan çalıştırın. Ardından, tarayıcıyı açın ve URL'yi girinhttp://localhost:5000/hello/TutorialsPoint.
Tarayıcıda aşağıdaki çıktı görüntülenecektir.
Hello TutorialsPoint!
Varsayılan dize değişkeni kısmına ek olarak, kurallar aşağıdaki dönüştürücüler kullanılarak oluşturulabilir -
Sr.No. | Dönüştürücüler ve Açıklama |
---|---|
1 |
int tamsayı kabul eder |
2 |
float Kayan nokta değeri için |
3 |
path dizin ayırıcı karakter olarak kullanılan eğik çizgileri kabul eder |
Aşağıdaki kodda tüm bu yapıcılar kullanılmıştır.
from flask import Flask
app = Flask(__name__)
@app.route('/blog/<int:postID>')
def show_blog(postID):
return 'Blog Number %d' % postID
@app.route('/rev/<float:revNo>')
def revision(revNo):
return 'Revision Number %f' % revNo
if __name__ == '__main__':
app.run()
Yukarıdaki kodu Python Shell'den çalıştırın. URL'yi ziyaret edinhttp://localhost:5000/blog/11 tarayıcıda.
Verilen sayı, argüman olarak kullanılır. show_blog()işlevi. Tarayıcı aşağıdaki çıktıyı görüntüler -
Blog Number 11
Bu URL'yi tarayıcıya girin - http://localhost:5000/rev/1.1
revision()işlevi bağımsız değişken olarak kayan nokta sayısını alır. Tarayıcı penceresinde aşağıdaki sonuç belirir -
Revision Number 1.100000
Flask'ın URL kuralları, Werkzeug’syönlendirme modülü. Bu, oluşturulan URL'lerin benzersiz olmasını ve Apache tarafından belirlenen emsallere dayalı olmasını sağlar.
Aşağıdaki komut dosyasında tanımlanan kuralları düşünün -
from flask import Flask
app = Flask(__name__)
@app.route('/flask')
def hello_flask():
return 'Hello Flask'
@app.route('/python/')
def hello_python():
return 'Hello Python'
if __name__ == '__main__':
app.run()
Her iki kural da benzer görünür ancak ikinci kuralda eğik çizgi (/)kullanıldı. Sonuç olarak, kanonik bir URL olur. Bu nedenle, kullanarak/python veya /python/aynı çıktıyı döndürür. Ancak ilk kural durumunda,/flask/ URL sonuçlanır 404 Not Found sayfa.