راه اندازی برنامه¶
یک برنامه فلاسک نمونه ای از کلاس Flask
است. همه چیز در مورد برنامه، مانند پیکربندی و URLها، در این کلاس ثبت می شود.
ساده ترین راه برای ایجاد یک برنامه فلاسک این است که یک نمونه سراسری Flask
را مستقیماً در بالای کد خود ایجاد کنید، مانند "Hello, World!" که در صفحه قبل انجام شد. در حالی که این کار در برخی موارد ساده و مفید است، اما میتواند با رشد پروژه باعث ایجاد مشکلاتی شود.
به جای ایجاد یک نمونه Flask
به صورت سراسری، آن را در داخل یک تابع ایجاد خواهید کرد. این تابع با نام کارخانه برنامه شناخته می شود. هر گونه پیکربندی، ثبت نام و سایر تنظیمات مورد نیاز برنامه در داخل تابع اتفاق می افتد، سپس برنامه برگردانده می شود.
کارخانه برنامه¶
زمان شروع کدنویسی است! دایرکتوری flaskr
را ایجاد کنید و فایل __init__.py
را اضافه کنید. __init__.py
وظیفه دوگانه ای را انجام می دهد: شامل کارخانه برنامه است و به پایتون می گوید که دایرکتوری flaskr
باید به عنوان یک بسته در نظر گرفته شود.
$ mkdir flaskr
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]
را مشاهده خواهید کرد. برای نحوه رسیدگی به آن به آدرس در حال استفاده مراجعه کنید.
با تعریف و دسترسی به دیتا بیس ادامه دهید.