تابع اصلی که وظیفه پاسخگویی به درخواست صفحه ی اصلی وب سایت را دارد را طوری ویرایش کردیم تا اولا قالب مناسب برای فرم را نمایش و همچنین بتواند اطلاعات فرم را دریافت و عملیات مناسب را روی آن ها انجام دهد. 

مثال زیر را در نظر بگیرید:



ابتدا به دکوریتو تابع مسئول دقت کنید، حالا ما به این دکوریتو پارامتری به عنوان متد اضافه کرده ایم. با استفاده از این دستور به فلاسک می گوییم که این تابع چه نوع درخواست هایی را مورد پذیرش و پردازش قرار می دهد. بطور پیش فرض اگر این پارامتر را اضافه نکرده باشیم تابع مربوطه مسئول پاسخگویی به درخواست های GET خواهد بود. 

برای این تابع ما علاوه بر متد GET، متد POST را نیز به عنوان دیگر نوع از درخواست هایی که این تابع مسئول آن است معرفی کرده ایم زیرا این تابع مسئول دریافت و بررسی اطلاعات فرم موجود در این صفحه نیز می باشد. البته این امکان وجود دارد که اطلاعات مربوط به فرم ها را با متد GET و از طریق پارامتری کردن URL نیز دریافت و مورد پذیرش قرار دهیم اما این کار باعث می شود تمامی اطلاعات ارسالی کابر در آدرس قابل مشاهده باشد که چندان جالب نیست. پس بجای استفاده از این متد از POST استفاده خواهیم کرد. 

برای ذخیره کردن اطلاعات فرم زمانی که در دسترس هستند متغییرهای محلی تعریف کرده ایم و زمانی که اطلاعاتی در دسترس نیست آنها را با None مقداردهی اولیه می کنیم. در این تابع ابتدا ما یک شی از کلاس NameForm ایجاد می کنیم و اگر تابع validate_on_submit() مقدار صحیح بازگرداند، اطلاعات این شی را استخراج و به قالب مربوطه پاس می دهیم. 

وقتی کاربر برای اولین بار درخواست این آدرس را ارسال می کند، وب سرور یک درخواست از نوع GET و بدون هیچ اطلاعات فرم ای را دریافت کرده و تابع را فراخوانی می کند. در این تابع بخاطر اینکه تابع validate_on_submit() مقدار false را بر میگرداند و در نتیجه شرط بدنه ی if رد می شود و قالب مربوطه با پارامترهایی که مقدار None دارند فراخوانی می شود. در پاسخ به این فراخوانی قالب مربطوه نمایش فرم را به کاربر باز می گرداند. 

حال زمانی که کاربر فرم را تکمیل کرده و به سمت سرور ارسال می کند ما یک درخواست با متد POST و اطلاعات مربوط فرم را دریافت می کنیم. فراخوانی تابع validate_on_submit() اعتبارسنج Required() را برای فیلد name بررسی می کند. در حقیقت این اعتبارسنج اطمینان حاصل می کند تا این فیلد خالی نماند. اگر این اعتبارسنج مقدار صحیح را باز گرداند ما به بدنه ی شرط if می رسیم که اطلاعات فرم را در متغییرهای محلی ذخیره و به قالب مربوطه پاس می دهد.



اگر کاربر مقدار فیلد name را پر نکند، اعتبارسنج Required() خطا را دریافت کرده و اینجا است که می توانیم قدرت اکستنشن Flask-WTF نمایان می شود. در این موقعیت به طور اتوماتیک پیغام خطای مناسب را برای کاربر به نمایش در خواهد آمد.