TurboGears - Flash Mesajları

TurboGears, bilgileri kullanıcıya rahatsız edici olmayan bir şekilde bildirmek için çok uygun bir mesajlaşma sistemi sağlar. Tg modülündeki TGFlash sınıfı, düz bir tanımlama bilgisinde saklanan yanıp sönen mesajlar için destek sağlar. Bu sınıf, sunucu tarafında ve istemci tarafında JavaScript aracılığıyla flash mesajların alınmasını destekler.

render()Python'dan kullanıldığında TGFlash sınıfının yöntemi, bir flash mesaj oluşturmak için şablondan çağrılabilir. JavaScript'te kullanılıyorsa, bir WebFlash nesnesi sağlar. Ortaya çıkarırpayload() ve render() Geçerli flash iletiyi getirme ve JavaScript'ten oluşturma yöntemleri.

Bir TurboGears projesi 'hızlı başlangıç' kullanılarak oluşturulduğunda, bir Master.html şablonuna sahiptir. Bu flash nesnesinin bir değişkeninin tanımını içerir. Denetleyiciden alınan bu flash mesajın içeriği, bu şablondaki işaretli yer tutucunun yerini alır.

<py:with vars = "flash = tg.flash_obj.render('flash', use_js = False)">
   <div py:if = "flash" py:replace = "Markup(flash)" />
</py:with>

tg.flash_obj işlenmiş herhangi bir şablonun içinde bulunan WebFlash nesnesidir. master.htmlşablonu. Bu nesne, mevcut flaş mesajının alınmasına ve görüntülenmesine izin verir.

Flash mesajları bir çerezde (varsayılan olarak adı webflash olan) kullanılarak saklanır. tg.flash()yöntem. Mesaj ve durum parametreleri daha sonra ona aktarılır.

tg.flash('Message', 'status')

Flash olarak adlandırılan yöntem bir yönlendirme gerçekleştirirse, flash yönlendirilen sayfanın içinde görünür olacaktır. Yöntem doğrudan bir şablonu ortaya çıkarırsa, flaş şablonun içinde görünür olacaktır.

Flash mesajın görünümü, durum koduna CSS stili uygulanarak özelleştirilebilir. 'Hızlı başlangıç' projesi, public / css / style.css stil sayfası tarafından özelleştirilmiş hata, uyarı, bilgi ve ok durum kodlarını içerir. Stiller içeren daha fazla durum kodu da eklenebilir.

#flash > .warning {
   color: #c09853;
   background-color: #fcf8e3;
   border-color: #fbeed5;
}

#flash > .ok {
   color: #468847;
   background-color: #dff0d8;
   border-color: #d6e9c6;
}

#flash > .error {
   color: #b94a48;
   background-color: #f2dede;
   border-color: #eed3d7;
}

#flash > .info {
   color: #3a87ad;
   background-color: #d9edf7;
   border-color: #bce8f1;
}

Bu harici stil sayfasının şablona eklenmesi gerekiyor -

<link rel = "stylesheet" type = "text/css" media = "screen" 
   href = "${tg.url('/css/style.css')}" />

Herhangi bir Flash mesaj desteğinin konfigürasyonu, TGFlash nesnesinin configure () yöntemi veya app_cfg.py (config klasöründe) için parametreler ayarlanarak elde edilebilir. Yapılandırılabilir parametreler -

Sr.No. Parametreler ve Açıklama
1

flash.cookie_name

Flash mesajları saklamak için kullanılan çerezin adı. Varsayılanwebflash.

2

flash.default_status

Belirtilmemişse varsayılan mesaj durumu (varsayılan olarak tamam)

3

flash.template

Olarak kullanılır flash template işlendiğinde.

4

flash.allow_html

Döner on/off escaping in flash messages, varsayılan olarak HTML'ye izin verilmez.

5

flash.js_call

Flash'ı JavaScript'ten görüntülerken çalıştırılacak olan JavaScript kodu. Varsayılanwebflash.render()

6

flash.js_template

string.Template Flash mesajlar için tam JavaScript desteğini değiştirmek için kullanılan örnek.

  • pop_payload() - işlev fetches current flash message, statusve ilgili bilgiler. Flash mesajı almak çerezi silecektir.

  • render(container_id, use_js=True) - Flash mesajını şablon içinde işleyin veya onlar için Javascript desteği sağlayın.

  • container_id , mesajların görüntüleneceği DIV'dir, use_js ise flash'ı HTML olarak veya JavaScript kullanımı için işleme arasında geçiş yapar.

  • status - Sadece mevcut flash durumunu alın, flash durumunu almak çerezi siler.

  • message - Sadece güncel flash mesajı alın, flash mesajı aldığınızda çerez silinir.

Basit Bir Hızlı Mesaj Nasıl Yapılır?

Aşağıdaki örnekte, kök denetleyici sınıfında bir flash () yöntemi sağlanmıştır. Açığa çıkan şablon flash.html'de işlenen bir flash () mesajı çağırır.

from hello.lib.base import BaseController
from tg import expose, flash, redirect, request

class RootController(BaseController):
   @expose('hello.templates.flash')
   def flash(self, user = None):
      
      if user:
         flash(message = "Welcome "+user,status = "ok")
      else:
         flash(message = "Welcome Guest",status = "info")
      return {}

Yapma kodu flash.html şablonlar klasöründe aşağıdaki gibidir

<html xmlns = "http://www.w3.org/1999/xhtml"
   xmlns:py = "http://genshi.edgewall.org/"
   xmlns:xi = "http://www.w3.org/2001/XInclude">

   <head>
      <title>TurboGears 2.3: Flash messages>/title>
      <link rel = "stylesheet" type = "text/css" media = "screen"
         href = "${tg.url('/css/style.css')}" />
			
      <py:with vars = "flash = tg.flash_obj.render('flash', use_js = False)">
         <div py:if = "flash" py:replace = "Markup(flash)" />
      </py:with>
		
   </head>

   <body>
      <h2>Hello TurboGears</h2>
   </body>
	
</html>

Sunucuyu başlatın ve girin http://localhost:8080/flash?user=MVL tarayıcıda

URL'yi değiştir http://localhost:8080/flash ve style.css'deki tanıma göre farklı biçimlendirilmiş flash mesajı görün