شروع مقدماتی برای Python Flask با کاپیتان کد (3)

سلام.بعد از مدت زیادی دوباره اومدیم با کایپتان کد، قسمت سوم از سری شروع مقدماتی برای Python Flaskجلسه ی قبلی اومدیم و این دو کار رو یاد گرفتیم:استفاده از Template ها و ریختن قالب در فایل جداگانهمبحث Static و استفاده از استایل جداگانهتوی این قسمت می خواهیم در مورد این ها صحبت کنیم:استفاده از Url variablesانجام عملیات redirect یا تغییر مسیرشاید این ها به ظاهر ساده بیان ولی به وقتی واردشون بشید، جالب میشه!بریم که شروع کنیم ...یکی از قابلیتی که فلسک داره اینه که ما می تونیم یک قسمتی از ادرس route رو متغیر کنیم. این مثلا کجا ها استفاده می شه؟ الان می گم.برای مثال این ادرس صفحه ی "همه ی مطالب" یک سایت هست:https://example.com/posts/ما می خواهیم کاری کنیم که اگر نام هر مطلب بعد / آخر قرار بگیرد اون مطلب از دیتابیس خونده بشه و به کاربر نمایش داده بشه. مثال:https://example.com/posts/make-site-with-pythonمی تونیم برای همین مثال توی کدمون یک روت تعریف کنیم، فقط ما چون دیتابیس نداریم یک صفحه ی شبیه به صفحه ی مطالب ارسال می کنیم و عنوان رو توی اون قرار می دیم. یک لیست هم برای مطالبی که وجود دارند به صورت دستی تعریف می کنیم.add to app.py:@app.route('/posts/<post_name>') def posts(post_name): all_posts = ['make-site-with-python', 'how-to-make-cake', 'all-os-can-show-gui', 'captain code coding'] if post_name in all_posts: post_name = post_name.replace(&quot-&quot, &quot &quot) return render_template(&quotposts.html&quot, name=post_name, content=f&quotThis is content of <b>{post_name}</b> post&quot) else: return &quotPost Not Found!&quottemplates/posts.html:<!doctype html> <html lang=&quoten&quot> <head> <meta charset=&quotUTF-8&quot> <meta name=&quotviewport&quot content=&quotwidth=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0&quot> <meta http-equiv=&quotX-UA-Compatible&quot content=&quotie=edge&quot> <link rel=&quotstylesheet&quot href=&quot/static/styles/styles.css&quot> <title>{{ name }}</title> </head> <body> <h1>{{ name }}</h1> <p> {{ content|safe }} </p> </body> </html>همونطور که دیدید از <> استفاده کردیم تا بتوانیم یک متغیر رو توی url بسازیم. بعد برای فانکشنِ روت، یک ورودی گرفتیم و از اون طریق نام مطلب رو بدست آوردیم. بقیه اش هم خیلی ساده و واضح هست. خودتون بلدید.همه کد ها هر قسمت رو توی یک مخزن در گیت هاب ذخیره کردم. می تونید از قسمت انتخاب برنچ جلسه رو انتخاب کنید و پروژه رو تا توی اون قسمت ببینید. https://github.com/safakamali/flask-beginner-course از این قسمت می تونید جلسه رو انتخاب کنید.انجام عملیات redirect یا تغییر مسیربیاین برای این موضوع قدم به قدم پیش بریم:1) from flask import Flask, render_template, redirect, url_for2) کاری کنیم که اگر مطلب مساوی با captain code coding بود، ما را به صفحه ی درباره بفرست.@app.route('/posts/<post_name>') def posts(post_name): all_posts = ['make-site-with-python', 'how-to-make-cake', 'all-os-can-show-gui', 'captain-code-coding'] if post_name == all_posts[3]: # captain code coding return redirect(url_for('about')) elif post_name in all_posts: post_name = post_name.replace(&quot-&quot, &quot &quot) return render_template(&quotposts.html&quot, name=post_name, content=f&quotThis is content of <b>{post_name}</b> post&quot) else: return &quotPost Not Found!&quotتوضیحات: تابع redirect یک ادرس می گیره و ما رو به اون صفحه ریدایرکت می کنه. ولی ما برای اینکه کارمون نظم داشته باشه و بعد راحت تر باشیم، از url_for استفاده کردیم. در url_for نام روت توی برنامه مون رو میدیم و متغیر های url رو هم میدیم و برای ما یک ریدایریکت اساسی و خلاصه ... درست می کنه.خودتون تست کنید!بعدا در پروژه ها از این زیاد استفاده می کنیم برای مثال بخش ثبت نام یا ورود.این قسمت هم به پایان رسید ...همون طور که گفتم یک مخزن کد توی گیتهاب ساختم و کد های هر جلسه رو توی اون می گذارم. این پیشنهاد دوست عزیز امیرمحمد پوراسمی بود. می تونید این مخزن رو ⭐ کنید تا همیشه در دسترستون باشه. https://github.com/safakamali/flask-beginner-course اگر سوال یا پیشنهادی دارید می تونید توی نظرات مطرح کنید. اگر هم مطلب جاییش اشکال داشت باز هم همینطور. اگر مطلب رو دوست داشتید ❤️ و اگر می خواهید این دوره رو دنبال کنید، انتشارات کاپیتان کد رو دنبال کنید.