راه اندازی برنامه

یک برنامه فلاسک نمونه ای از کلاس Flask است. همه چیز در مورد برنامه، مانند پیکربندی و URLها، در این کلاس ثبت می شود.

ساده ترین راه برای ایجاد یک برنامه فلاسک این است که یک نمونه سراسری Flask را مستقیماً در بالای کد خود ایجاد کنید، مانند "Hello, World!" که در صفحه قبل انجام شد. در حالی که این کار در برخی موارد ساده و مفید است، اما می‌تواند با رشد پروژه باعث ایجاد مشکلاتی شود.

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

کارخانه برنامه

زمان شروع کدنویسی است! دایرکتوری flaskr را ایجاد کنید و فایل __init__.py را اضافه کنید. __init__.py وظیفه دوگانه ای را انجام می دهد: شامل کارخانه برنامه است و به پایتون می گوید که دایرکتوری flaskr باید به عنوان یک بسته در نظر گرفته شود.

$ mkdir flaskr
flaskr/__init__.py
import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'

    return app

create_app تابع کارخانه برنامه است. بعداً در آموزش به آن اضافه خواهید کرد، اما کارهای زیادی انجام می دهد.

  1. app = Flask(__name__, instance_relative_config=True) نمونه Flask را ایجاد می کند.

    • __name__ نام ماژول فعلی پایتون است. برنامه برای راه‌اندازی برخی مسیرها باید بداند در کجا قرار دارد، و __name__ راهی مناسب برای گفتن آن است.

    • instance_relative_config=True به برنامه می‌گوید که فایل‌های پیکربندی مربوط به پوشه پوشه نمونه هستند. پوشه نمونه خارج از بسته flaskr قرار دارد و می‌تواند داده‌های محلی را که نباید به کنترل نسخه متعهد شوند، مانند اسرار پیکربندی و فایل پایگاه داده، در خود جای دهد.

  2. app.config.from_mapping() برخی از تنظیمات پیش فرض را تنظیم می کند که برنامه از آنها استفاده خواهد کرد:

    • SECRET_KEY توسط فلاسک و برنامه های افزودنی برای ایمن نگه داشتن داده ها استفاده می شود. برای ارائه یک مقدار مناسب در طول توسعه، روی 'dev' تنظیم شده است، اما هنگام استقرار باید با یک مقدار تصادفی جایگزین شود.

    • DATABASE مسیری است که فایل پایگاه داده SQLite در آن ذخیره می شود. این تحت app.instance_path است، که مسیری است که فلاسک برای پوشه نمونه انتخاب کرده است. در بخش بعدی اطلاعات بیشتری در مورد پایگاه داده خواهید آموخت.

  3. app.config.from_pyfile() پیکربندی پیش فرض را با مقادیر گرفته شده از فایل config.py در پوشه نمونه در صورت وجود لغو می کند. به عنوان مثال، هنگام استقرار، می توان از این برای تنظیم یک SECRET_KEY واقعی استفاده کرد.

    • test_config همچنین می تواند به کارخانه منتقل شود و به جای پیکربندی نمونه استفاده می شود. به این ترتیب تست هایی که بعداً در آموزش می نویسید می توانند مستقل از هر مقدار توسعه ای که پیکربندی کرده اید پیکربندی شوند.

  4. os.makedirs() اطمینان حاصل می کند که app.instance_path وجود دارد. فلاسک پوشه نمونه را به طور خودکار ایجاد نمی کند، اما باید ایجاد شود زیرا پروژه شما فایل پایگاه داده SQLite را در آنجا ایجاد می کند.

  5. @app.route() یک مسیر ساده ایجاد می کند تا بتوانید قبل از ورود به ادامه آموزش، عملکرد برنامه را ببینید. این یک ارتباط بین /hello و تابعی ایجاد می کند که یک پاسخ، در اینجا رشته 'Hello, World!' را ایجاد می کند.

اجرای برنامه

Now you can run your application using the flask command. From the terminal, tell Flask where to find your application, then run it in debug mode. Remember, you should still be in the top-level flask-tutorial directory, not the flaskr package.

Debug mode shows an interactive debugger whenever a page raises an exception, and restarts the server whenever you make changes to the code. You can leave it running and just reload the browser page as you follow the tutorial.

$ flask --app flaskr run --debug

خروجی مشابه این را خواهید دید:

* Serving Flask app "flaskr"
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: nnn-nnn-nnn

در یک مرورگر به http://127.0.0.1:5000/hello مراجعه کنید و باید پیام "Hello, World!" را ببنید. تبریک! شما الان برنامه فلاسکتان را اجرا میکنید!

اگر برنامه دیگری در حال حاضر از پورت 5000 استفاده می کند، زمانی که سرور تلاش می کند راه اندازی شود،OSError: [WinError 10013] یا OSError: [Errno 98] را مشاهده خواهید کرد. برای نحوه رسیدگی به آن به آدرس در حال استفاده مراجعه کنید.

با تعریف و دسترسی به دیتا بیس ادامه دهید.