मैं फ्लास्क के साथ एक एप्लिकेशन लिख रहा हूं और मैं डेस्कटॉप और मोबाइल ब्राउज़र के लिए अलग कोड जेनरेट करना चाहता हूं। आईएमएचओ एप्लिकेशन कोड को समान रखने और टेम्पलेट स्तर पर स्टैक के नीचे विभिन्न सामग्री की सेवा करने की समस्या को धक्का देना एक अच्छा विचार होना चाहिए - इसलिए यह अनिवार्य रूप से दो उपयोग मामलों के लिए टेम्पलेट्स के दो सेट लिखने और एक रास्ता खोजने का मामला बन जाता है प्रत्येक अनुरोध पर उपयोग करने के लिए सही चुनने के लिए। मैं कुप्पी के साथ डिफ़ॉल्ट Jinja2 टेम्पलेट इंजन का उपयोग कर रहा हूँ।

मुझे यह उल्लेख करना चाहिए कि मुझे फ्लास्क के साथ कोई अनुभव नहीं है और मैं कोड लिखते समय इसके माध्यम से अपना रास्ता सीख रहा हूं - मैं इसे एक अभ्यास के रूप में भी ले रहा हूं :)

इस समस्या का समाधान करने और स्रोत कोड को यथासंभव स्वच्छ रखने के लिए आप किस तंत्र का उपयोग करेंगे?

9
Luke404 1 नवम्बर 2011, 04:34

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/ उपनिर्देशिका में रखा है।

5
Luke404 8 नवम्बर 2011, 03:18
खुद से टिप्पणी करना: फ्लास्क मेलिंग सूची पर इस पर भी संक्षेप में चर्चा की गई है: flask.pocoo.org/mailinglist/archive/2011/11/7/…
 – 
Luke404
15 फरवरी 2012, 13:14

मैं आपको शायद कुछ अलग दिशा में इंगित करना चाहता हूं।

बहुत सारे डिज़ाइनर और डेवलपर (मुझे शामिल किया गया) वेबसाइट डिज़ाइन के भविष्य को टेम्पलेट्स के अलग होने में नहीं देखते हैं, लेकिन एक ऐसा टेम्प्लेट है जो गतिशील रूप से इसके पर्यावरण के प्रति प्रतिक्रिया करता है। यानी यह अपने तत्वों को इस तरह से पुनर्व्यवस्थित करता है जो दिए गए प्रदर्शन के लिए सबसे उपयुक्त है।

इसे उत्तरदायी डिजाइन कहा जाता है। मुझे पता है कि शायद यह वह समाधान नहीं है जिसे आप ढूंढ रहे हैं लेकिन यह एक बेहतर तरीका बन सकता है।

4
Octavian A. Damiean 6 सितंबर 2012, 20:48
आपका एक अच्छा सुझाव है, मोटे तौर पर बोल रहा हूँ, लेकिन इस विशिष्ट प्रश्न का उत्तर नहीं है। मैं अधिक या कम "शुद्ध सामग्री" के साथ टेम्पलेट्स का एक सेट रखने के बिंदु पर जाना चाहता हूं, और CSS3 के साथ सभी स्टाइल और फेरबदल कर रहा हूं, लेकिन फिलहाल दो सेट टेम्पलेट्स आसान है हमारे लिए प्रबंधन करने के लिए। यह हमारे ग्राहकों के लिए एक वेब ऐप बन जाएगा और कमोबेश हर पेज का एक अलग टेम्प्लेट होगा...
 – 
Luke404
8 नवम्बर 2011, 03:23
वास्तव में। मैं बस आपको बताना चाहता था क्योंकि यह बहुत कुछ वैसा ही लगता है जैसा आपको चाहिए।
 – 
Octavian A. Damiean
8 नवम्बर 2011, 03:36
हाँ, वह और एक (अच्छे) डिज़ाइनर जो खाने के लिए काम करने को तैयार है :) गंभीरता से, धन्यवाद, मैंने आपके लिंक को हमारे NoteS.txt में बुकमार्क कर लिया है। जैसा कि मैंने कहा, मैं किसी दिन वहां पहुंचने की कामना करता हूं। डेस्कटॉप ब्राउज़र के लिए एक (आसान) निश्चित-चौड़ाई लेआउट के साथ शुरू करना एक अच्छा विचार हो सकता है, और तरल लेआउट का निर्माण शुरू करने के लिए मोबाइल संस्करण का उपयोग करना जो अंततः एकमात्र बन जाएगा। लेकिन हम इस सवाल से पीछे हट रहे हैं।
 – 
Luke404
8 नवम्बर 2011, 03:51