راه اندازی برنامه¶
یک برنامه فلاسک نمونه ای از کلاس 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 تابع کارخانه برنامه است. بعداً در آموزش به آن اضافه خواهید کرد، اما کارهای زیادی انجام می دهد.
app = Flask(__name__, instance_relative_config=True)نمونهFlaskرا ایجاد می کند.__name__نام ماژول فعلی پایتون است. برنامه برای راهاندازی برخی مسیرها باید بداند در کجا قرار دارد، و__name__راهی مناسب برای گفتن آن است.instance_relative_config=Trueبه برنامه میگوید که فایلهای پیکربندی مربوط به پوشه پوشه نمونه هستند. پوشه نمونه خارج از بستهflaskrقرار دارد و میتواند دادههای محلی را که نباید به کنترل نسخه متعهد شوند، مانند اسرار پیکربندی و فایل پایگاه داده، در خود جای دهد.
app.config.from_mapping()برخی از تنظیمات پیش فرض را تنظیم می کند که برنامه از آنها استفاده خواهد کرد:SECRET_KEYتوسط فلاسک و برنامه های افزودنی برای ایمن نگه داشتن داده ها استفاده می شود. برای ارائه یک مقدار مناسب در طول توسعه، روی'dev'تنظیم شده است، اما هنگام استقرار باید با یک مقدار تصادفی جایگزین شود.DATABASEمسیری است که فایل پایگاه داده SQLite در آن ذخیره می شود. این تحتapp.instance_pathاست، که مسیری است که فلاسک برای پوشه نمونه انتخاب کرده است. در بخش بعدی اطلاعات بیشتری در مورد پایگاه داده خواهید آموخت.
app.config.from_pyfile()پیکربندی پیش فرض را با مقادیر گرفته شده از فایلconfig.pyدر پوشه نمونه در صورت وجود لغو می کند. به عنوان مثال، هنگام استقرار، می توان از این برای تنظیم یکSECRET_KEYواقعی استفاده کرد.test_configهمچنین می تواند به کارخانه منتقل شود و به جای پیکربندی نمونه استفاده می شود. به این ترتیب تست هایی که بعداً در آموزش می نویسید می توانند مستقل از هر مقدار توسعه ای که پیکربندی کرده اید پیکربندی شوند.
os.makedirs()اطمینان حاصل می کند کهapp.instance_pathوجود دارد. فلاسک پوشه نمونه را به طور خودکار ایجاد نمی کند، اما باید ایجاد شود زیرا پروژه شما فایل پایگاه داده SQLite را در آنجا ایجاد می کند.@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] را مشاهده خواهید کرد. برای نحوه رسیدگی به آن به آدرس در حال استفاده مراجعه کنید.
با تعریف و دسترسی به دیتا بیس ادامه دهید.