Template ها در پایتون

سلام . میخواستم بدونم Template ها در پایتون چی هستند؟ میشه ی مختصر توضیح بدید.

حقیقت امر اینه که اکثر چیزهایی که دیدم انگلیسی بودند. خودم هم انگلیسی پیدا میکنم. ولی قبلش باید ی مختصر در موردش بدونم. تا بهتر بتونم مطالب انگلیسی رو درک کنم.

https://docs.djangoproject.com/en/1.7/topics/templates/

خوب. اول باید اینو بگم که تمپلیت یه کلمه مربوط به طراحی وبسایت میشه و ربطی به زبان برنامه نویسی پایتون نداره. مربوط به فریموورک django میشه (یا فریموورکهای مشابه)

کل داستان مربوط به MVC یا همون Model View Controller هست که یه معماری در طراحی سایته. یا به زبان دیگه MVT یا همون Model View Template (یکی هستن، فقط اسمشون فرق میکنه و البته معنی این کلمات جا به جا هست)

اینکه چرا از معماری mvt استفاده میکنیم، به خاطر اینه که توسعه‌ی پروژمون اصولی باشه و به هم ریختگی کمتری داشته باشیم.
مثلا ما میتونیم با یه اسکریپت پایتون، بدون نیاز به هیچ معماری خاصی، یه وبسایت ساده‌ی ۱-۲ صفحه‌ای بسازیم و تمام تگ‌های html که قراره به کاربر نشون داده بشه رو همونجا به صورت یک string بسازیم و آخرش به کاربر return کنیم.
یا میتونیم لاجیک نرم‌افزارمون (M در MVC یا V در MVT) رو توی یک اسکریپت داشته باشیم که با بخش دیتابیس (C در MVC یا M در MVT) در ارتباط باشه و با این اطلاعات، تگهای html (یعنی V در MVC یا T در VMT) رو رندر بگیره.

ما در حقیقت کدهامون رو ۳ قسمت میکنیم که مدیریت کردنشون برای خودمون راحتتر (و امکان‌پذیر) باشه. اگه غیر از این باشه، نمیشه پروژه‌ی بزرگ انجام داد.


حالا ما یه سری template engine داریم توی پایتون، یکیشون jinja2 هست که django ازش استفاده میکنه.
شکل کلیش شبیه فایل html معمولی هست که یه سری تگ خاص به شکل {{ var }} داره.
وقتی میخوایم این فایل رو رندر بگیریم (از داخل view) توی کدمون یه سری متغیر بهش ارسال میکنیم که اینا توسط template engine پردازش میشن و فایل html نهایی ساخته میشه.

توی view:

render_template('index.html', var="Hello")

توی template:

<p class="message">{{ var }}</p>

خروجی توی بروزر:

<p class="message">Hello</p>
2 پسندیده

مطالعه این مطلب خالی از لطف نخواهد بود :nerd_face:

1 پسندیده

ممنون بابت توضیح خوبتون متوجه شدم دقیقا چی هست.

واقعا تلاشتون رو تحسین میکنم.

2 پسندیده

یه سری جستجو کردم . نتایج به این صورت بود خلاصش :‌

Chameleon is an HTML/XML template engine for Python.

Cheetah is an open source template engine and code-generation tool written in Python.

Diazo allows you to apply a theme contained in a static HTML web page to a dynamic website created using any server-side technology. With Diazo,

Evoque is a lightweight full-featured generic text templating engine for python with sandbox-ability, versatility and simplicity as key feature priorities.

Genshi is a Python library that provides an integrated set of components for parsing, generating, and processing HTML, XML or other textual content for output generation on the web.
----
Juno is a web framework that was designed to make development as fast as possible.

Myghty's primary feature is it's Python Server Page (PSP) system. Individual templates are generated into pure Python modules which become the method of serving the content. Myghty creates real Python modules from templates, which are regular .py files with corresponding .pyc bytecode files. These modules can also be generated in memory only, if desired.

pyratemp is a small, simple and powerful template-engine for python.

Pystache is a Python implementation of Mustache. Mustache is a framework-agnostic, logic-free templating system inspired by ctemplate and et. 
2 پسندیده