TurboGears - फ्लैश संदेश

नॉन-ऑब्सट्रक्टिव तरीके से उपयोगकर्ता को सूचना देने के लिए टर्बोजियर्स एक बहुत ही सुविधाजनक मैसेजिंग सिस्टम प्रदान करता है। Tg मॉड्यूल में TGFlash क्लास फ्लैशिंग संदेशों के लिए समर्थन प्रदान करता है जो एक सादे कुकी में संग्रहीत होते हैं। यह वर्ग सर्वर के साथ-साथ क्लाइंट पक्ष पर जावास्क्रिप्ट के माध्यम से फ्लैश संदेश लाने का समर्थन करता है।

render()TGFlash क्लास की विधि, जब पायथन से ही इस्तेमाल की जाती है, तो एक फ्लैश मैसेज को रेंडर करने के लिए टेम्प्लेट से मंगाई जा सकती है। यदि जावास्क्रिप्ट पर उपयोग किया जाता है, तो यह एक WebFlash ऑब्जेक्ट प्रदान करता है। यह उजागर करता हैpayload() तथा render() वर्तमान फ्लैश संदेश लाने और इसे जावास्क्रिप्ट से प्रस्तुत करने के तरीके।

जब TurboGears प्रोजेक्ट 'क्विकस्टार्ट' का उपयोग करके बनाया जाता है, तो इसमें Master.html टेम्प्लेट होता है। इसमें उस फ़्लैश ऑब्जेक्ट के एक चर की परिभाषा है। नियंत्रक से प्राप्त इस फ्लैश संदेश की सामग्री इस टेम्पलेट में चिह्नित प्लेसहोल्डर को प्रतिस्थापित करती है।

<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 WebFlash ऑब्जेक्ट है, जो किसी भी शामिल टेम्पलेट के अंदर उपलब्ध है master.htmlटेम्पलेट। यह ऑब्जेक्ट वर्तमान फ़्लैश संदेश को पुनः प्राप्त करने और इसे प्रदर्शित करने की अनुमति देता है।

फ्लैश संदेश का उपयोग करके कुकी में संग्रहीत किया जाता है (जिसका नाम डिफ़ॉल्ट रूप से वेबफ्लैश है) tg.flash()तरीका। संदेश और स्थिति मापदंडों को तब पास किया जाता है।

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

यदि फ़्लैश कहा जाने वाला तरीका रीडायरेक्ट करता है, तो रीडायरेक्ट किए गए पेज के अंदर फ्लैश दिखाई देगा। यदि विधि सीधे एक टेम्पलेट को उजागर करती है, तो फ्लैश स्वयं टेम्पलेट के अंदर दिखाई देगा।

सीएसएस स्टाइल को स्टेटस कोड में लगाकर फ्लैश मैसेज के रूप को अनुकूलित किया जा सकता है। एक 'क्विकस्टार्टेड' प्रोजेक्ट में एक स्टाइलशीट पब्लिक / सीएसएस / स्टाइल.केएस द्वारा अनुकूलित त्रुटि, चेतावनी, सूचना और ठीक स्थिति कोड शामिल हैं। शैलियों के साथ अधिक स्थिति कोड भी जोड़े जा सकते हैं।

#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;
}

इस बाहरी स्टाइल शीट को टेम्प्लेट में शामिल करने की आवश्यकता है -

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

किसी भी फ्लैश मैसेज सपोर्ट का कॉन्फिगरेशन TGFlash ऑब्जेक्ट या app_cfg.py (कॉन्फिग फोल्डर) के कॉन्फिगरेशन के लिए पैरामीटर सेट करके प्राप्त किया जा सकता है। विन्यास योग्य पैरामीटर हैं -

अनु क्रमांक। पैरामीटर और विवरण
1

flash.cookie_name

कुकी का नाम फ्लैश संदेशों को संग्रहीत करने के लिए उपयोग किया जाता है। डिफ़ॉल्ट हैwebflash

2

flash.default_status

डिफ़ॉल्ट संदेश स्थिति यदि निर्दिष्ट नहीं है (डिफ़ॉल्ट रूप से ठीक है)

3

flash.template

के रूप में इस्तेमाल किया flash template जब प्रदान किया गया।

4

flash.allow_html

मोड़ों on/off escaping in flash messages, डिफ़ॉल्ट रूप से HTML की अनुमति नहीं है।

5

flash.js_call

जावास्क्रिप्ट कोड जो जावास्क्रिप्ट से फ्लैश प्रदर्शित करते समय चलाया जाएगा। डिफ़ॉल्ट हैwebflash.render()

6

flash.js_template

string.Template उदाहरण का उपयोग फ्लैश संदेशों के लिए पूर्ण जावास्क्रिप्ट समर्थन को बदलने के लिए किया जाता है।

  • pop_payload() - कार्य fetches current flash message, statusऔर संबंधित जानकारी। फ्लैश मैसेज मिलने से कुकी डिलीट हो जाएगी।

  • render(container_id, use_js=True) - टेम्पलेट के अंदर फ्लैश संदेश रेंडर करें या उनके लिए जावास्क्रिप्ट समर्थन प्रदान करें।

  • container_id वह DIV है जहां संदेश प्रदर्शित किए जाएंगे, जबकि उपयोग_js फ्लैश को HTML के रूप में या जावास्क्रिप्ट उपयोग के लिए प्रदान करने के बीच स्विच करते हैं।

  • status - केवल वर्तमान फ़्लैश स्थिति प्राप्त करें, फ़्लैश स्थिति प्राप्त करने से कुकी हटा दी जाएगी।

  • message - केवल वर्तमान फ्लैश संदेश प्राप्त करें, फ्लैश संदेश प्राप्त करने से कुकी को हटा दिया जाएगा।

कैसे करें एक साधारण फ्लैश मैसेज?

निम्नलिखित उदाहरण में, रूट कंट्रोलर क्लास में एक फ्लैश () विधि प्रदान की जाती है। यह एक फ्लैश () संदेश को कॉल करता है जो कि उजागर टेम्पलेट, Flash.html को प्रदान किया जाता है

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 {}

बनाने के लिए कोड flash.html टेम्प्लेट फ़ोल्डर में निम्नानुसार है

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

सर्वर शुरू करें और दर्ज करें http://localhost:8080/flash?user=MVL ब्राउज़र में

URL को इसमें बदलें http://localhost:8080/flash और शैली को अलग-अलग रूप में स्वरूपित फ़्लैश संदेश देखें