شروع کار با Flask: اولین اپلیکیشن وب خود را بسازید

فهرست مطالب

“`html





شروع کار با Flask: اولین اپلیکیشن وب خود را بسازید



شروع کار با Flask: اولین اپلیکیشن وب خود را بسازید

Flask یک فریم‌ورک سبک و منعطف Python است که برای ساخت برنامه‌های کاربردی وب (Web Application) استفاده می‌شود. اگر به دنبال یک فریم‌ورک آسان برای یادگیری و سریع برای توسعه هستید، Flask انتخاب بسیار خوبی است. این مقاله راهنمای جامعی برای شروع کار با Flask است و به شما کمک می‌کند تا اولین اپلیکیشن وب خود را بسازید.

چرا Flask؟

قبل از اینکه به سراغ کدنویسی برویم، بیایید ببینیم چرا Flask یک انتخاب مناسب برای توسعه وب است:

  • سبک و ساده: Flask یک فریم‌ورک مینیمال است و هسته‌ی اصلی آن تنها شامل ابزارهای ضروری است. این سادگی باعث می‌شود یادگیری آن آسان باشد و توسعه‌دهندگان بتوانند به سرعت پروژه‌های خود را شروع کنند.
  • منعطف: Flask تصمیمات زیادی را بر عهده‌ی توسعه‌دهنده می‌گذارد. این انعطاف‌پذیری به شما امکان می‌دهد تا از ابزارها و کتابخانه‌های مورد علاقه خود استفاده کنید و برنامه‌های خود را به طور کامل سفارشی‌سازی کنید.
  • گسترش‌پذیر: Flask به راحتی با استفاده از افزونه‌ها (Extensions) قابل گسترش است. این افزونه‌ها امکاناتی مانند پشتیبانی از پایگاه داده، احراز هویت، مدیریت فرم‌ها و بسیاری موارد دیگر را به Flask اضافه می‌کنند.
  • جامعه‌ی فعال: Flask یک جامعه‌ی فعال و بزرگ دارد که منابع آموزشی فراوانی را در اختیار توسعه‌دهندگان قرار می‌دهد. همچنین می‌توانید به راحتی در انجمن‌ها و گروه‌های آنلاین سوالات خود را مطرح کنید و از کمک سایر توسعه‌دهندگان بهره‌مند شوید.
  • مناسب برای پروژه‌های کوچک و بزرگ: Flask برای پروژه‌های کوچک و ساده و همچنین پروژه‌های بزرگ و پیچیده مناسب است. می‌توانید با Flask یک وب‌سایت ساده یا یک API پیچیده بسازید.

پیش‌نیازها

قبل از شروع آموزش، مطمئن شوید که پیش‌نیازهای زیر را برآورده کرده‌اید:

  • Python: Flask بر اساس Python ساخته شده است، بنابراین باید Python 3.6 یا بالاتر را بر روی سیستم خود نصب داشته باشید. می‌توانید Python را از وب‌سایت رسمی Python دانلود و نصب کنید.
  • pip: pip مدیر بسته پایتون است که برای نصب کتابخانه‌ها و فریم‌ورک‌ها استفاده می‌شود. معمولاً pip به همراه Python نصب می‌شود. برای بررسی نصب بودن pip، می‌توانید دستور `pip –version` را در ترمینال یا خط فرمان خود اجرا کنید.
  • محیط توسعه: یک محیط توسعه مناسب (IDE) می‌تواند روند کدنویسی را آسان‌تر کند. برخی از IDEهای محبوب برای Python عبارتند از: VS Code, PyCharm, Sublime Text.

نصب Flask

برای نصب Flask، از pip استفاده می‌کنیم. دستور زیر را در ترمینال یا خط فرمان خود اجرا کنید:

pip install flask

این دستور Flask و تمام وابستگی‌های آن را نصب می‌کند.

ایجاد یک اپلیکیشن ساده با Flask

حالا که Flask را نصب کردیم، می‌توانیم اولین اپلیکیشن وب خود را بسازیم. مراحل زیر را دنبال کنید:

  1. ایجاد یک فایل Python: یک فایل با نام `app.py` ایجاد کنید. این فایل حاوی کد اصلی اپلیکیشن شما خواهد بود.
  2. وارد کردن Flask: در فایل `app.py`، کتابخانه Flask را وارد کنید:
  3. from flask import Flask
  4. ایجاد یک شیء Flask: یک شیء از کلاس `Flask` ایجاد کنید. این شیء نمایانگر اپلیکیشن وب شما است:
  5. app = Flask(__name__)

    `__name__` یک متغیر خاص در پایتون است که نام ماژول فعلی را نشان می‌دهد. در این مورد، `__name__` برابر با نام فایل (یعنی `app`) خواهد بود.

  6. تعریف یک Route: یک Route یک URL است که به یک تابع خاص متصل می‌شود. وقتی کاربر به آن URL مراجعه می‌کند، تابع مربوطه اجرا می‌شود. برای تعریف یک Route، از دکوراتور `route()` استفاده می‌کنیم:
  7. @app.route("/")
    def hello_world():
        return "<p>Hello, World!</p>"

    در این مثال، Route اصلی (`/`) به تابع `hello_world()` متصل شده است. وقتی کاربر به URL اصلی وب‌سایت مراجعه می‌کند، تابع `hello_world()` اجرا می‌شود و متن “Hello, World!” را به عنوان پاسخ برمی‌گرداند.

  8. اجرای اپلیکیشن: برای اجرای اپلیکیشن، از متد `run()` استفاده می‌کنیم:
  9. if __name__ == '__main__':
        app.run(debug=True)

    این کد فقط زمانی اجرا می‌شود که فایل `app.py` به طور مستقیم اجرا شود (نه زمانی که به عنوان یک ماژول وارد شود). `debug=True` به Flask می‌گوید که در حالت دیباگ اجرا شود. در حالت دیباگ، Flask به طور خودکار تغییرات کد را تشخیص می‌دهد و سرور را مجدداً راه‌اندازی می‌کند. همچنین، پیام‌های خطا و هشدارهای بیشتری را نمایش می‌دهد.

  10. کد کامل: کد کامل فایل `app.py` به صورت زیر است:
  11. from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
        return "<p>Hello, World!</p>"
    
    if __name__ == '__main__':
        app.run(debug=True)
  12. اجرای اپلیکیشن: فایل `app.py` را در ترمینال یا خط فرمان خود اجرا کنید:
  13. python app.py

    Flask یک سرور توسعه راه‌اندازی می‌کند و آدرس و پورت آن را نمایش می‌دهد. معمولاً آدرس و پورت `http://127.0.0.1:5000/` است. این آدرس را در مرورگر خود وارد کنید تا اپلیکیشن خود را مشاهده کنید.

درک Routes و View Functions

در Flask، Routes و View Functions نقش مهمی در مدیریت درخواست‌های HTTP دارند. بیایید نگاهی دقیق‌تر به این مفاهیم بیندازیم:

  • Routes: یک Route یک URL است که به یک تابع خاص متصل می‌شود. وقتی کاربر به آن URL مراجعه می‌کند، تابع مربوطه اجرا می‌شود. Flask از دکوراتور `route()` برای تعریف Routes استفاده می‌کند.
  • View Functions: یک View Function تابعی است که به یک Route متصل شده است. وقتی کاربر به Route مربوطه مراجعه می‌کند، View Function اجرا می‌شود. View Function باید یک پاسخ HTTP را برگرداند. این پاسخ می‌تواند یک رشته، یک شیء `Response`، یا یک Tuple باشد.

مثال:

from flask import Flask

app = Flask(__name__)

@app.route("/users/<username>")
def show_user_profile(username):
    # show the user profile for that user
    return f"User: {username}"

@app.route("/post/<int:post_id>")
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return f"Post ID: {post_id}"

if __name__ == '__main__':
    app.run(debug=True)

در این مثال، دو Route تعریف شده است:

  • `/users/<username>`: این Route یک متغیر `username` را دریافت می‌کند. Flask مقدار این متغیر را به عنوان آرگومان به تابع `show_user_profile()` ارسال می‌کند.
  • `/post/<int:post_id>`: این Route یک متغیر `post_id` را دریافت می‌کند. `:int` مشخص می‌کند که این متغیر باید یک عدد صحیح باشد. Flask مقدار این متغیر را به عنوان آرگومان به تابع `show_post()` ارسال می‌کند.

استفاده از Templates با Jinja2

Templates به شما امکان می‌دهند تا HTML را از کد Python خود جدا کنید. این کار باعث می‌شود که کد شما خواناتر و قابل نگهداری‌تر شود. Flask از موتور قالب‌بندی Jinja2 برای ارائه Templates استفاده می‌کند.

  1. ایجاد یک پوشه Templates: یک پوشه با نام `templates` در کنار فایل `app.py` ایجاد کنید.
  2. ایجاد یک فایل Template: یک فایل HTML با نام `index.html` در پوشه `templates` ایجاد کنید. این فایل حاوی کد HTML شما خواهد بود.
  3. <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Flask App</title>
    </head>
    <body>
        <h1>Hello, {{ name }}!</h1>
    </body>
    </html>

    در این مثال، از سینتکس Jinja2 برای نمایش مقدار متغیر `name` استفاده شده است. `{{ name }}` یک متغیر در Template است که مقدار آن در کد Python به Template ارسال می‌شود.

  4. استفاده از `render_template()`: در کد Python خود، از تابع `render_template()` برای ارائه Template استفاده کنید.
  5. from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
        return render_template('index.html', name='User')
    
    if __name__ == '__main__':
        app.run(debug=True)

    در این مثال، تابع `render_template()` فایل `index.html` را از پوشه `templates` بارگیری می‌کند و متغیر `name` را با مقدار `’User’` به Template ارسال می‌کند. Template رندر شده به عنوان پاسخ HTTP برگردانده می‌شود.

کار با Forms

فرم‌ها (Forms) برای دریافت داده‌ها از کاربران استفاده می‌شوند. Flask از افزونه‌هایی مانند Flask-WTF برای مدیریت فرم‌ها استفاده می‌کند. Flask-WTF یک انتزاع ساده بر روی کتابخانه WTForms است که امکان ایجاد و مدیریت فرم‌ها را در Flask آسان می‌کند.

  1. نصب Flask-WTF: با استفاده از pip، Flask-WTF را نصب کنید:
  2. pip install flask-wtf
  3. پیکربندی Flask-WTF: در فایل `app.py`، Flask-WTF را پیکربندی کنید:
  4. from flask import Flask, render_template, request, flash
    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    from wtforms.validators import DataRequired
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'your_secret_key' # Change this to a strong, random key!
    
    class NameForm(FlaskForm):
        name = StringField('What is your name?', validators=[DataRequired()])
        submit = SubmitField('Submit')
    
    @app.route('/', methods=['GET', 'POST'])
    def index():
        name = None
        form = NameForm()
        if form.validate_on_submit():
            name = form.name.data
            form.name.data = '' # Clear the form after submission
        return render_template('index.html', form=form, name=name)
    
    if __name__ == '__main__':
        app.run(debug=True)
  5. ایجاد یک Template برای فرم: یک فایل Template با نام `index.html` در پوشه `templates` ایجاد کنید:
  6. <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Flask App</title>
    </head>
    <body>
        <h1>Hello, {% if name %}{{ name }}{% else %}World{% endif %}!</h1>
    
        <form method="POST">
            {{ form.hidden_tag() }}
            {{ form.name.label }} {{ form.name() }}
            {{ form.submit() }}
        </form>
    </body>
    </html>

    در این مثال، یک فرم ساده با یک فیلد متن و یک دکمه ارسال ایجاد شده است. سینتکس Jinja2 برای نمایش فرم و فیلدهای آن استفاده شده است.

کار با دیتابیس (پایگاه داده)

Flask با استفاده از افزونه‌هایی مانند Flask-SQLAlchemy می‌تواند با پایگاه‌های داده مختلف ارتباط برقرار کند. Flask-SQLAlchemy یک انتزاع سطح بالا بر روی SQLAlchemy است که امکان کار با پایگاه داده را در Flask آسان می‌کند.

  1. نصب Flask-SQLAlchemy: با استفاده از pip، Flask-SQLAlchemy را نصب کنید:
  2. pip install flask-sqlalchemy
  3. پیکربندی Flask-SQLAlchemy: در فایل `app.py`، Flask-SQLAlchemy را پیکربندی کنید:
  4. from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' # Use a more robust database in production
    db = SQLAlchemy(app)
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        username = db.Column(db.String(80), unique=True, nullable=False)
        email = db.Column(db.String(120), unique=True, nullable=False)
    
        def __repr__(self):
            return '<User %r>' % self.username
    
    with app.app_context():
        db.create_all()
    
    @app.route('/')
    def index():
        return "Connected to the database!"
    
    if __name__ == '__main__':
        app.run(debug=True)

    در این مثال، یک پایگاه داده SQLite با نام `test.db` ایجاد شده است. همچنین، یک مدل `User` تعریف شده است که شامل فیلدهای `id`, `username` و `email` است. حتما از دیتابیس قوی تری مانند Postgresql در محیط production استفاده کنید

استقرار (Deployment)

پس از اتمام توسعه اپلیکیشن، باید آن را بر روی یک سرور مستقر کنید تا کاربران بتوانند به آن دسترسی داشته باشند. روش‌های مختلفی برای استقرار اپلیکیشن‌های Flask وجود دارد. یکی از ساده‌ترین روش‌ها استفاده از پلتفرم‌های PaaS (Platform as a Service) مانند Heroku یا PythonAnywhere است.

  • Heroku: Heroku یک پلتفرم PaaS است که امکان استقرار و مدیریت اپلیکیشن‌های وب را فراهم می‌کند. Heroku از Git برای استقرار کد استفاده می‌کند و به طور خودکار وابستگی‌های اپلیکیشن را نصب می‌کند.
  • PythonAnywhere: PythonAnywhere یک پلتفرم PaaS است که به طور خاص برای اپلیکیشن‌های Python طراحی شده است. PythonAnywhere یک IDE مبتنی بر وب را ارائه می‌دهد و امکان استقرار اپلیکیشن‌ها را با چند کلیک فراهم می‌کند.

همچنین می توانید از سرویس دهنده های ابری مانند AWS, Google Cloud, Microsoft Azure برای استقرار برنامه خود استفاده کنید . استفاده از داکر (Docker) به استقرار آسان و قابل اعتماد تر برنامه های Flask کمک میکند

نتیجه‌گیری

در این مقاله، با Flask، یک فریم‌ورک سبک و منعطف Python، آشنا شدیم و اولین اپلیکیشن وب خود را ساختیم. یاد گرفتیم که چگونه Routes و View Functions را تعریف کنیم، از Templates استفاده کنیم، با Forms کار کنیم و با پایگاه داده ارتباط برقرار کنیم. امیدواریم که این مقاله برای شما مفید بوده باشد و به شما در شروع کار با Flask کمک کند.



“`

“تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”

قیمت اصلی 2.290.000 ریال بود.قیمت فعلی 1.590.000 ریال است.

"تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"

"با شرکت در این دوره جامع و کاربردی، به راحتی مهارت‌های برنامه‌نویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر می‌سازد تا به سرعت الگوریتم‌های پیچیده را درک کرده و اپلیکیشن‌های هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفه‌ای و امکان دانلود و تماشای آنلاین."

ویژگی‌های کلیدی:

بدون نیاز به تجربه قبلی برنامه‌نویسی

زیرنویس فارسی با ترجمه حرفه‌ای

۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان