मैं फ्लास्क के साथ एक एप्लिकेशन लिख रहा हूं और मैं डेस्कटॉप और मोबाइल ब्राउज़र के लिए अलग कोड जेनरेट करना चाहता हूं। आईएमएचओ एप्लिकेशन कोड को समान रखने और टेम्पलेट स्तर पर स्टैक के नीचे विभिन्न सामग्री की सेवा करने की समस्या को धक्का देना एक अच्छा विचार होना चाहिए - इसलिए यह अनिवार्य रूप से दो उपयोग मामलों के लिए टेम्पलेट्स के दो सेट लिखने और एक रास्ता खोजने का मामला बन जाता है प्रत्येक अनुरोध पर उपयोग करने के लिए सही चुनने के लिए। मैं कुप्पी के साथ डिफ़ॉल्ट Jinja2 टेम्पलेट इंजन का उपयोग कर रहा हूँ।
मुझे यह उल्लेख करना चाहिए कि मुझे फ्लास्क के साथ कोई अनुभव नहीं है और मैं कोड लिखते समय इसके माध्यम से अपना रास्ता सीख रहा हूं - मैं इसे एक अभ्यास के रूप में भी ले रहा हूं :)
इस समस्या का समाधान करने और स्रोत कोड को यथासंभव स्वच्छ रखने के लिए आप किस तंत्र का उपयोग करेंगे?
2 जवाब
खुद को जवाब :)
मैं इस समाधान का उपयोग कर समाप्त हुआ:
import flask
# patch flask.render_template()
_render_template = flask.render_template
def _my_render_template(*args, **kwargs):
if detect_mobile_browser(flask.request.user_agent.string):
args = ('m/' + args[0],) + args[1:]
return _render_template(*args, **kwargs)
flask.render_template = _my_render_template
अब तक यह काम करता प्रतीत होता है, और मैंने अभी "मोबाइल टेम्प्लेट" को एक m/
उपनिर्देशिका में रखा है।
मैं आपको शायद कुछ अलग दिशा में इंगित करना चाहता हूं।
बहुत सारे डिज़ाइनर और डेवलपर (मुझे शामिल किया गया) वेबसाइट डिज़ाइन के भविष्य को टेम्पलेट्स के अलग होने में नहीं देखते हैं, लेकिन एक ऐसा टेम्प्लेट है जो गतिशील रूप से इसके पर्यावरण के प्रति प्रतिक्रिया करता है। यानी यह अपने तत्वों को इस तरह से पुनर्व्यवस्थित करता है जो दिए गए प्रदर्शन के लिए सबसे उपयुक्त है।
इसे उत्तरदायी डिजाइन कहा जाता है। मुझे पता है कि शायद यह वह समाधान नहीं है जिसे आप ढूंढ रहे हैं लेकिन यह एक बेहतर तरीका बन सकता है।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।