إخفاء تفاصيل التنفيذ على نظام ترتيب البريد الإلكتروني المكتوب في بيثون

StackOverflow https://stackoverflow.com/questions/405509

سؤال

أكتب تطبيقًا حيث تتمثل إحدى الميزات في السماح للمستخدم بكتابة قالب بريد إلكتروني باستخدام بناء جملة Markdown.

إلى جانب التنسيق ، يجب أن يكون المستخدم قادرًا على استخدام العناصر النائبة لبعض المتغيرات التي سيتم استبدالها في وقت التشغيل.

الطريقة التي تعمل بها حاليًا بسيطة للغاية: تحتوي القوالب على العناصر النائبة للثاني ٪ (VAR) وأستبدل تلك القاموس قبل تطبيق تنسيق MarkDown2.

تبين أن المستخدم النهائي لهذا النظام سيكون مستخدمًا ذكيًا من التكنولوجيا ولا أرغب في توضيح الجميع أنه مكتوب في Python.

ليس الأمر أنني لا أحب Python ... أعتقد في الواقع أن Python هو الأداة المثالية لهذا الوظيفة ، لا أريد أن أعرض ذلك للمستخدم (أرغب في ذلك حتى لو تم كتابته في Java ، Perl ، روبي أو أي شيء آخر).

لذلك أود أن أطلب رؤى حول ما سيكون ، في رأيك ، أفضل طريقة لفضح العناصر النائبة للمستخدمين:

  1. ما رأيك هو أفضل تنسيق لما هو (يفكر مثل $ {var} أو $ (var) أو #{var})؟

  2. ما هي أفضل طريقة لاستبدال هؤلاء العناصر النائبة؟

على الرغم من استخدام تعبير منتظم للتغيير - على سبيل المثال - $ {var} إلى ٪ (var) s ثم تطبيق استبدال templating python العادي ، لكنني لست متأكدًا من أن هذا هو أفضل طريقة.

إذا ذهبت بهذه الطريقة ، فسيكون من الرائع جدًا أن يوضح لي ما هو مسودة هذا التعبير العادي أيضًا.

شكرًا!

تحديث: أشار المستخدم باستخدام أنظمة templating كاملة ، لكنني أعتقد أن ذلك قد لا يستحق ذلك ، لأن كل ما أحتاجه هو استبدال العناصر النائبة: لن يكون لدي حلقات أو أي شيء من هذا القبيل.

التحديث النهائي: لقد اخترت عدم استخدام أي محركات قالب في هذا الوقت. اخترت أن أذهب مع نهج الأبسط. Hyperboreean). الحقيقة هي أنني لا أحب اختيار حل لأنه في وقت ما في المستقبل قد تكون هناك حاجة. سأحتفظ بكل هذه الاقتراحات على جعبتي ، وإذا كانت هناك حاجة واضحة في عمر التطبيق ، فهناك حاجة واضحة لواحد أو أكثر من الميزات التي يقدمها لهم ، سأعيد النظر في الفكرة. الآن ، أعتقد حقًا أنها مبالغة. وجود قوالب كاملة في ذلك المستخدم النهائي يمكن تحريره كما يريد ، على الأقل من وجهة نظري ، مشكلة أكثر من الفائدة. ومع ذلك ، فإنه يشعر بأنه أجمل كثيرًا أن أكون على دراية بالأسباب التي لم تقل هذا المسار ، بدلاً من مجرد البحث عن أي شيء واختياره.

شكرا جزيلا على كل المدخلات.

هل كانت مفيدة؟

المحلول

استخدم أداة قالب حقيقية: ماكو أو جينجا. لا تتدحرج بنفسك. لا يستحق أو لا يستحق ذلك.

نصائح أخرى

احصل على نظام تلبس الضوء ... لست متأكدًا مما إذا كان يمكنك استخدام بعض تلك التي توفرها Turbogears (Kid أو Genshi)

أوصي Jinja2.

لا ينبغي أن ينشئ مشكلة أداء وقت التشغيل لأنه يجمع القوالب إلى Python. سيوفر مرونة أكبر بكثير. أما بالنسبة لل قابلية الصيانة; ؛ يعتمد ذلك كثيرًا على المبرمج ، ولكن من الناحية النظرية (ومن المسلم به أن لا أستطيع أن أرى لماذا يجب أن يكون من الصعب الحفاظ عليها.

مع المزيد من العمل ، يمكنك إعطاء المستخدم الخاص بك في التكنولوجيا القدرة على تحديد نمط الاستبدال بنفسها. أو اختر واحدة من الإعدادات الافتراضية التي تزودها.

يمكنك تجربة طريقة Str.Format () الجديدة من Python 2.6/3.0: http://docs.python.org/library/string.html#formatstrings

هذا يبدو مختلفًا بعض الشيء عن التكوين ٪ وقد لا يكون معروفًا على الفور مثل Python:

'fish{chips}'.format(chips= 'x')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top