تابع اصلی که وظیفه پاسخگویی به درخواست صفحه ی اصلی وب سایت را دارد را طوری ویرایش کردیم تا اولا قالب مناسب برای فرم را نمایش و همچنین بتواند اطلاعات فرم را دریافت و عملیات مناسب را روی آن ها انجام دهد.
تابع اصلی که وظیفه پاسخگویی به درخواست صفحه ی اصلی وب سایت را دارد را طوری ویرایش کردیم تا اولا قالب مناسب برای فرم را نمایش و همچنین بتواند اطلاعات فرم را دریافت و عملیات مناسب را روی آن ها انجام دهد.
فیلدهای درون یک فرم اشیایی هستند که زمانی که آنها را درون قالب ها فراخوانی می کنید می توانند نمایش گرافیکی به صورت تگ های HTML داشته باشند. تصور کنید که تابع که مسئول پاسخگویی به یک آدرس است یک شی از نوع فرمی که در آموزش قبلی ایجاد کردیم را به عنوان یک پارامتر به یک قالب ارسال می کند.
زمانی که با استفاده از اکستنشن Flask-WTF اقدام به ایجاد یک فرم می کنید در حقیقت این فرم یک کلاس است که از کلاس Form ارث بری می کند. این کلاس هر یک از فیلدهای فرم را از طریق یک شی درون کلاس معرفی می کند. این اشیا که فرم ها را معرفی می کنند می توانند اعتبارسنج هایی داشته باشند که معتبر بودن یا نبودن اطلاعات ارسال از سمت کاربر را بررسی می کنند. در حقیقیت این اعتبارسنج ها توابعی هستند که اطلاعات وارد شده از سوی کاربر را مورد بررسی قرار می دهند.
به طور پیش فرض اکستنشن Flask-WTF فرم های ساخته شده در یک وب اپلیکیشن فلاسکی را در مقابل حملات CSRF محافظت می کند. به طور خلاصه یک حمله CSRF زمانی رخ می دهد که یک وب سایت خرابکار درخواست هایی را به وب سایتی دیگر ارسال می کند که قربانی در آن ورود کرده است.
شی درخواستی که در آموزش های قبلی راجع به آنها صحبت کردیم حاوی تمامی اطلاعاتی است که از سوی کاربر ارسال می شود. با استفاده از request.form می توانیم به اطلاعات فرم هایی که از سوی کاربر به عنوان یک درخواست POST ارسال شده است، دسترسی داشته باشیم.
برای هرچه پویاتر شدن قالب های مورد استفاده در فلاسک علاوه بر اینکه نیاز به امکان استفاده از متغییرها داریم باید بتوانیم ساختارهای کنترلی نیز مورد استفاد قرار دهیم. بطور مثال اگر یک متغییر لیست به قالب ما پاس داده شود باید بتوانیم روی آن loop بزنیم و عناصر آنرا نمایش دهیم.
برای اینکه بتوانیم قالب هایی ایجاد کنیم که پویا باشند و با توجه به اطلاعاتی که به آنها ارسال می شود انعطاف پذیر ظاهر شوند باید بتوانیم در آنها از متغییرها استفاده کنیم. بدین منظور ما از {{ name }} داخل قالب استفاده می کنیم.
به طور پیش فرض فلاسک برای پیدا کردن قالب ها به سراغ فولدری با همین نام یعنی template داخل پوشه ی اپلیکیشن ما می رود. اگر بخواهیم همان وب اپلیکیشن خود را که در فایل hello.py پیاده سازی کردیم را با استفاده از قالب ها ایجاد کنیم باید دو قالب index.html و user.html را داخل پوشه ی template قرار دهیم.
در ساده ترین حالت یک قالب jinja2 یک فایل متنی می باشد که شامل پاسخی به یک درخواست است.
بهترین راه برای داشتن وب اپلیکیشنی که به سادگی قابل نگهداری و توسعه باشد آن است که تمیز و ساختارمند کد زده شده باشد. اگر به نحوه ی کدهایی که تا اینجا در توابع خود که مسئول پاسخگویی به درخواست های مختلف هستن، توجه کرده باشید متوجه می شوید که این کدها یک مشکل اساسی دارند.