Flask Blueprints چیست؟ ساختار پروژه با نقشه ها

نکته: برای این آموزش، برای هر تغییری که ایجاد می کنید، باید سرور فلاسک خود را مجددا راه اندازی کنید. مگر اینکه سرور Flask خود را با env راه اندازی کنید.
Flask یک چارچوب وب سبک و محبوب پایتون است که به توسعه دهندگان اجازه می دهد تا برنامه های وب را سریع و آسان بسازند. یکی از قدرتمندترین ویژگیهای Flask، قابلیت طرح اولیه آن است که به توسعهدهندگان این امکان را میدهد تا کدهای خود را در ماژولهای منطقی سازماندهی کنند.
پس از چند سال کار با لاراول، پایتون و کمی فلاسک را در آموزش مهندسی نرم افزار ALX یاد گرفتم. هنگام ساخت اولین برنامه واقعی خود با Flask، به سرعت متوجه شدم که “فایل تعریف مسیر” من خیلی سریع در حال رشد است. پر از تعاریف مسیر، توابع مرتبط با مسیر و منطق است.
چگونه به طور موثر آن را تجزیه کنم؟
سپس به یاد آوردم که فکر می کردند ما Blueprints هستیم. خب نقشه ها! در این مقاله، نگاهی دقیقتر به طرحهای فلاسک خواهیم داشت و به شما نشان میدهیم که چگونه میتوانند به شما در ساخت برنامههای مقیاسپذیر و قابل نگهداری کمک کنند.
فلاسک بلوپرینت چیست؟
طرحهای Flask راهی برای سازماندهی برنامه Flask شما در واحدهای قابل استفاده مجدد و مهمتر از همه قابل نگهداری است. با طرحهای اولیه، میتوانید برنامه خود را به قطعات کوچکتر و قابل مدیریتتر تقسیم کنید و نگهداری و مقیاس آن را آسانتر کنید.
هر طرح یک واحد مستقل است که می تواند با برنامه Flask شما ثبت شود. بلوپرینت ها مجموعه ای از نماها، قالب ها و فایل های ثابت را تعریف می کنند که با پیشوند URL خاصی مرتبط هستند.
با استفاده از نقشه ها، می توانید یک ساختار برنامه کاربردی انعطاف پذیر و توسعه پذیر ایجاد کنید که به شما امکان می دهد بدون ایجاد اختلال در پایگاه کد موجود، ویژگی ها و عملکردهای جدیدی را اضافه کنید.
حالا بیایید دستمان را کثیف کنیم
پوشه پروژه خود را ایجاد کنید، داخل آن فایل app.py ایجاد کنید. کد زیر را داخل این فایل قرار دهید. پس از آن، اگر به ترمینال خود بروید و “flask run” را وارد کنید، یک سرور فلاسک برای شما راه اندازی می شود.
from flask import Flask
def create_app():
app = Flask(__name__)
from blueprints.authentication.authentication import authentication as auth_blueprint
app.register_blueprint(auth_blueprint)
from blueprints.profile.profile import profile as profile_blueprint
app.register_blueprint(profile_blueprint)
return app
به کد بالا نگاه کنید و متوجه شوید که دو طرح برای احراز هویت و نمایه قبلاً ثبت شده است. حالا بیایید ببینیم که چگونه این طرح ها را ایجاد کنیم.
در پوشه فعلی خود جایی که app.py خود را دارید، پوشه ای به نام blueprints ایجاد کنید. در داخل طرحها، دو پوشه دیگر به نامهای «profile» و «authentication» ایجاد کنید.
عالی!
اکنون در پوشه های “profile” و “authentication” موارد زیر را ایجاد کنید:
- پوشه ای به نام static
- پوشه ای به نام templates
در داخل «پروفایل»، profile.py را ایجاد کنید
در داخل “Authentication” authenication.py را ایجاد کنید
حالا داخل profile.py کد زیر را بنویسید
from flask import Blueprint, render_template
profile = Blueprint('profile', __name__, template_folder="templates", static_folder="static", static_url_path="/blueprints/profile/static")
@profile.route('/profile')
def profile_page():
return "profile pages"
به پارامترهای روش Blueprint توجه کنید. ما چند چیز را در آنجا تعریف کردیم که مهمتر از همه، template_folder به Flask میگوید که کجا الگوهای این طرح نمایه را جستجو کند. این پوشه ای به نام templates در پوشه پروفایل است. static_folder را هم تعریف کردیم. کجا می توان فایل های ثابت هر فایل html که توسط این طرح ارائه می شود جستجو کرد.
اکنون برای طرح احراز هویت. کد به شرح زیر است
from flask import Blueprint, render_template
authentication = Blueprint('auth', __name__, template_folder="templates", static_folder="static", static_url_path="/blueprints/profile/static")
@authentication.route('/auth')
def auth_page():
return "auth pages"
فایل های استاتیک
در ابتدای این مقاله گفتیم که هر طرح اولیه میتواند خود حاوی فایلها و قالبهای ثابت خود باشد. بگذارید آن را نشان دهیم.
در داخل پوشه نقشه پروفایل، باید یک پوشه الگو ایجاد کرده باشید. پوشه قالب یک فایل html با نام profile.html ایجاد می کند
داخل profile/static یک پوشه به نام css و در داخل style.css ایجاد کنید. در اینجا کد html برای قرار دادن در profile.html وجود دارد
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<!-- <link rel="stylesheet" href="https://dev.to/blueprints/profile/static/css/styles.css"> -->
<link rel="stylesheet" href="{{ url_for('profile.static', filename="css/styles.css") }}">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<h1>Hello, world!</h1>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
</body>
</html>
به سر این فایل html که فایل های css را در آن قرار داده ام توجه ویژه ای داشته باشید. من این کار را به دو روش مختلف انجام دادم. توجه داشته باشید که به این ترتیب می توانید تمام فایل های استاتیک خود را شامل کنید. این مطابق با تعریف static_url در روش طرح نقشه کار می کند.
برای اجرای url/profile خود در مرورگر، باید مسیر را برای رندر profile.html تغییر دهید
@profile.route('/profile')
def profile_page():
return render_template('profile.html')
برای اینکه مطمئن شوید فایل css شما به درستی گنجانده شده است، پیش بروید و صفحه را با فایل css استایل دهید. این باید سرگرم کننده باشد.
همانطور که می بینید، طرح فلاسک یک واحد واقعی کاربردی فلاسک است. همه ویژگیهای برنامه شما مربوط به نمایه میتوانند مسیرهایی را در آنجا تعریف کرده و توسط profile.py مدیریت کنند.
در مورد احراز هویت نیز همینطور است.
ممنون که خواندید. فراموش نکنید که نظر بگذارید و به اشتراک بگذارید.
من Vincent Ikechukwu، توسعه دهنده وب Full Stack و مهندس نرم افزار هستم. از طریق لینک های زیر با من در شبکه های اجتماعی ارتباط برقرار کنید.