• 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
rquest nesnesi devamı

 
#1

Flask, bir istek aldığında uygulama context'ini ve request nesnesini aktif eder. İstek işlendikten sonra bu nesneler tekrardan silinir.
Örnek olarak aşağıdakilere bakalım:
Kod:
#hello.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
   return "Merhaba"

şimdi yukaridaki 
Kod:
hello.py

 dosyasını kullanalım:

Kod:
1   > from hello import app
2   > from flask import current_app
   >
3   > current_app.name
   RuntimeError: Working outside of application context.

4   > app_ctx = app.app_context()
5   > app_ctx.push()
6   > current_app.name
   'hello'

  1. hello.py dosyamızdan app ismindeki flask uygulama instance'ımızı import ediyoruz.

  2. flask kütüphanesinden current_app, uygulama context'sidir. Olan uygulama instance'ı tutar.

  3. Uygulama ismine erişiyoruz, ancak aktif olan context'de herhangi bir uygulama olmadığından hata alıyoruz.

  4. uygulama instance'ı olan ve import ettiğimiz app uygulamasının contextini alıyoruz.

  5. uygulama contextini aktif ediyoruz.

  6. artık bir uygulama contextine sahip olduğumuzdan uygulama ismine erişebiliriz. Uygulama ismi bizim modulun adıdır.
Şimdi 
Kod:
app.add_url_rule()

 fonksiyonundan bahsetmek istiyorum. Bu fonksiyon decore edilmiş 

Kod:
@app.route()

 fonksiyonu ile aynı işi yapar:

Kod:
   > from flask import Flask
   > app = Flask(__name__)
   > app_ctx = app.app_context()
   > app_ctx.push()
   >
1   > app.url_map
   Map([<Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])
   >
2   > def user():
   ...     return "user page"
   >
3   > app.add_url_rule('/user', user())
   >
4   > app.url_map
    <Rule '/user' (GET, OPTIONS, HEAD) -> user page>,
    <Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])

Yukarıda python yorumlayıcısında bir uygulama oluşturup, bu uygulamaya url ekledim.
  • url_map: uygulamanın sahip olduğu bütün url'leri ve bu url'lerle ilişkili olan view fonkiyonların geri dönüş değerlerini gösterir.

  • add_url_rule(): bu fonksiyon istek yapılacak olan url'i ve bu url'le ilişkili olacak olan fonksiyonu tanımlamaya yarar.
Son olarak request ile ilgili bahsetmek istediğim bir konu var:
Servera bir istek gittiğinde, flask bu istek gelmeden hemen önce ve sonra yapılmak istenen işlemler için dekoratorlar sunar:
  • before_first_request: uygulamaya ilk istek öncesinde çalıştırılmak istenen kod için kullanılır.
    @app.before_first_requestdef do_something():    # buraya yapılacak işlemler

  • before_request: bir fonksiyonu, kod parcasını her istekten önce çalıştırır
    @app.before_requestdef before_request():    #connect_to_database()


  • after_request: her istek sonunda çalışacak olan fonksiyon için kullanılır, kullanımı diğerleriyle aynıdır.
  • teardown_request: her istekten sonra bir fonksiyonu çalıştırmak için kullanılır.




Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Response nesnesi (yapılan http isteğine cevap) efsane 0 1,749 30-05-2017, Saat: 17:04
Son Mesaj: efsane
  Request nesnesi (http isteği) efsane 0 1,766 30-05-2017, Saat: 17:02
Son Mesaj: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2022 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.