وبلاگ
شروع کار با Flask: اولین اپلیکیشن وب خود را بسازید
فهرست مطالب
“تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”
"تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"
"با شرکت در این دوره جامع و کاربردی، به راحتی مهارتهای برنامهنویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر میسازد تا به سرعت الگوریتمهای پیچیده را درک کرده و اپلیکیشنهای هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفهای و امکان دانلود و تماشای آنلاین."
ویژگیهای کلیدی:
بدون نیاز به تجربه قبلی برنامهنویسی
زیرنویس فارسی با ترجمه حرفهای
۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان
0 تا 100 عطرسازی + (30 فرمولاسیون اختصاصی حامی صنعت)
دوره فوق فشرده مکالمه زبان انگلیسی (ویژه بزرگسالان)
شمع سازی و عودسازی با محوریت رایحه درمانی
صابون سازی (دستساز و صنعتی)
صفر تا صد طراحی دارو
متخصص طب سنتی و گیاهان دارویی
متخصص کنترل کیفی شرکت دارویی
“`html
شروع کار با 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 را نصب کردیم، میتوانیم اولین اپلیکیشن وب خود را بسازیم. مراحل زیر را دنبال کنید:
- ایجاد یک فایل Python: یک فایل با نام `app.py` ایجاد کنید. این فایل حاوی کد اصلی اپلیکیشن شما خواهد بود.
- وارد کردن Flask: در فایل `app.py`، کتابخانه Flask را وارد کنید:
- ایجاد یک شیء Flask: یک شیء از کلاس `Flask` ایجاد کنید. این شیء نمایانگر اپلیکیشن وب شما است:
- تعریف یک Route: یک Route یک URL است که به یک تابع خاص متصل میشود. وقتی کاربر به آن URL مراجعه میکند، تابع مربوطه اجرا میشود. برای تعریف یک Route، از دکوراتور `route()` استفاده میکنیم:
- اجرای اپلیکیشن: برای اجرای اپلیکیشن، از متد `run()` استفاده میکنیم:
- کد کامل: کد کامل فایل `app.py` به صورت زیر است:
- اجرای اپلیکیشن: فایل `app.py` را در ترمینال یا خط فرمان خود اجرا کنید:
from flask import Flask
app = Flask(__name__)
`__name__` یک متغیر خاص در پایتون است که نام ماژول فعلی را نشان میدهد. در این مورد، `__name__` برابر با نام فایل (یعنی `app`) خواهد بود.
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
در این مثال، Route اصلی (`/`) به تابع `hello_world()` متصل شده است. وقتی کاربر به URL اصلی وبسایت مراجعه میکند، تابع `hello_world()` اجرا میشود و متن “Hello, World!” را به عنوان پاسخ برمیگرداند.
if __name__ == '__main__':
app.run(debug=True)
این کد فقط زمانی اجرا میشود که فایل `app.py` به طور مستقیم اجرا شود (نه زمانی که به عنوان یک ماژول وارد شود). `debug=True` به Flask میگوید که در حالت دیباگ اجرا شود. در حالت دیباگ، Flask به طور خودکار تغییرات کد را تشخیص میدهد و سرور را مجدداً راهاندازی میکند. همچنین، پیامهای خطا و هشدارهای بیشتری را نمایش میدهد.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == '__main__':
app.run(debug=True)
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 استفاده میکند.
- ایجاد یک پوشه Templates: یک پوشه با نام `templates` در کنار فایل `app.py` ایجاد کنید.
- ایجاد یک فایل Template: یک فایل HTML با نام `index.html` در پوشه `templates` ایجاد کنید. این فایل حاوی کد HTML شما خواهد بود.
- استفاده از `render_template()`: در کد Python خود، از تابع `render_template()` برای ارائه Template استفاده کنید.
<!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 ارسال میشود.
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 آسان میکند.
- نصب Flask-WTF: با استفاده از pip، Flask-WTF را نصب کنید:
- پیکربندی Flask-WTF: در فایل `app.py`، Flask-WTF را پیکربندی کنید:
- ایجاد یک Template برای فرم: یک فایل Template با نام `index.html` در پوشه `templates` ایجاد کنید:
pip install flask-wtf
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)
<!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 آسان میکند.
- نصب Flask-SQLAlchemy: با استفاده از pip، Flask-SQLAlchemy را نصب کنید:
- پیکربندی Flask-SQLAlchemy: در فایل `app.py`، Flask-SQLAlchemy را پیکربندی کنید:
pip install flask-sqlalchemy
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”
"تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"
"با شرکت در این دوره جامع و کاربردی، به راحتی مهارتهای برنامهنویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر میسازد تا به سرعت الگوریتمهای پیچیده را درک کرده و اپلیکیشنهای هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفهای و امکان دانلود و تماشای آنلاین."
ویژگیهای کلیدی:
بدون نیاز به تجربه قبلی برنامهنویسی
زیرنویس فارسی با ترجمه حرفهای
۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان