بازنشر آموخته های شخصی

نمایش فرم ها

فیلدهای درون یک فرم اشیایی هستند که زمانی که آنها را درون قالب ها فراخوانی می کنید می توانند نمایش گرافیکی به صورت تگ های HTML داشته باشند. تصور کنید که تابع که مسئول پاسخگویی به یک آدرس است یک شی از نوع فرمی که در آموزش قبلی ایجاد کردیم را به عنوان یک پارامتر به یک قالب ارسال می کند. 

۰ نظر موافقین ۰ مخالفین ۰
مصطفی داودی

کلاس فرم

زمانی که با استفاده از اکستنشن Flask-WTF اقدام به ایجاد یک فرم می کنید در حقیقت این فرم یک کلاس است که از کلاس Form ارث بری می کند. این کلاس هر یک از فیلدهای فرم را از طریق یک شی درون کلاس معرفی می کند. این اشیا که فرم ها را معرفی می کنند می توانند اعتبارسنج هایی داشته باشند که معتبر بودن یا نبودن اطلاعات ارسال از سمت کاربر را بررسی می کنند. در حقیقیت این اعتبارسنج ها توابعی هستند که اطلاعات وارد شده از سوی کاربر را مورد بررسی قرار می دهند. 

۰ نظر موافقین ۱ مخالفین ۰
مصطفی داودی

CSRF

به طور پیش فرض اکستنشن Flask-WTF فرم های ساخته شده در یک وب اپلیکیشن فلاسکی را در مقابل حملات CSRF محافظت می کند. به طور خلاصه یک حمله CSRF زمانی رخ می دهد که یک وب سایت خرابکار درخواست هایی را به وب سایتی دیگر ارسال می کند که قربانی در آن ورود کرده است. 

۰ نظر موافقین ۱ مخالفین ۰
مصطفی داودی

مدیریت فرم ها

شی درخواستی که در آموزش های قبلی راجع به آنها صحبت کردیم حاوی تمامی اطلاعاتی است که از سوی کاربر ارسال می شود. با استفاده از request.form می توانیم به اطلاعات فرم هایی که از سوی کاربر به عنوان یک درخواست POST ارسال شده است، دسترسی داشته باشیم. 

۰ نظر موافقین ۰ مخالفین ۰
مصطفی داودی

ساختارهای کنترلی

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

۰ نظر موافقین ۰ مخالفین ۰
مصطفی داودی

استفاده از متغییرها در قالب ها

برای اینکه بتوانیم قالب هایی ایجاد کنیم که پویا باشند و با توجه به اطلاعاتی که به آنها ارسال می شود انعطاف پذیر ظاهر شوند باید بتوانیم در آنها از متغییرها استفاده کنیم. بدین منظور ما از {{ name }} داخل قالب استفاده می کنیم. 

۰ نظر موافقین ۰ مخالفین ۰
مصطفی داودی

تفسیر کردن قالب ها

به طور پیش فرض فلاسک برای پیدا کردن قالب ها به سراغ فولدری با همین نام یعنی template داخل پوشه ی اپلیکیشن ما می رود. اگر بخواهیم همان وب اپلیکیشن خود را که در فایل hello.py پیاده سازی کردیم را با استفاده از قالب ها ایجاد کنیم باید دو قالب index.html و user.html را داخل پوشه ی template قرار دهیم. 

۰ نظر موافقین ۱ مخالفین ۰
مصطفی داودی

ساده ترین قالب

در ساده ترین حالت یک قالب jinja2 یک فایل متنی می باشد که شامل پاسخی به یک درخواست است.

۰ نظر موافقین ۰ مخالفین ۰
مصطفی داودی

قالب ها

بهترین راه برای داشتن وب اپلیکیشنی که به سادگی قابل نگهداری و توسعه باشد آن است که تمیز و ساختارمند کد زده شده باشد. اگر به نحوه ی کدهایی که تا اینجا در توابع خود که مسئول پاسخگویی به درخواست های مختلف هستن، توجه کرده باشید متوجه می شوید که این کدها یک مشکل اساسی دارند. 

۰ نظر موافقین ۱ مخالفین ۰
مصطفی داودی

شی response

همانطور که در آموزش قبلی گفته شد گاهی نیاز است علاوه بر بازگرداندن رشته ای که شامل تگ های HTML است اطلاعاتی نظیر کد وضعیت و … را به سمت کاربر بازگردانیم و یکی از راه های آن بازگرداندن هرکدام از آنها حین خروجی تابع می باشد. 

۲ نظر موافقین ۰ مخالفین ۰
مصطفی داودی