Kahibaro
Discord Login Register

ساخت یک وب‌سرور ساده

شروع عملی: ساخت وب‌سرور با Flask

در بخش «آشنایی با Flask» با این فریم‌ورک به‌طور کلی آشنا شده‌اید. اینجا قدم‌به‌قدم یک وب‌سرور بسیار ساده می‌سازیم که روی کامپیوتر شما اجرا می‌شود و در مرورگر قابل مشاهده است.

هدف این بخش:

پیش‌نیازها

برای ادامهٔ این بخش فرض می‌کنیم:

pip install flask

یا روی بعضی سیستم‌ها:

pip3 install flask

ساخت اولین فایل وب‌سرور

۱. یک پوشهٔ جدید بسازید، مثلاً با نام my_first_webapp.
۲. داخل این پوشه، یک فایل جدید بسازید: app.py.

کد زیر را در app.py قرار دهید:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
    return "سلام! این اولین وب‌سرور سادهٔ من با Flask است."
if __name__ == "__main__":
    app.run()

در این کد چه اتفاقی می‌افتد (به‌صورت خیلی خلاصه و فقط مخصوص این مثال):

اجرای وب‌سرور

در همان پوشه‌ای که app.py است، ترمینال (یا Command Prompt) را باز کنید و بنویسید:

python app.py

(اگر سیستم شما از python3 استفاده می‌کند:)

python3 app.py

اگر همه چیز درست باشد، در ترمینال چیزی شبیه به این می‌بینید:

 * Serving Flask app 'app'
 * Debug mode: off
 * Running on http://127.0.0.1:5000

حالا:

سلام! این اولین وب‌سرور سادهٔ من با Flask است.

این یعنی وب‌سرور شما در حال اجرا است و درخواست‌های مرورگر را پاسخ می‌دهد.

مفهوم «مسیر» (Route) در وب‌سرور ساده

وب‌سرور شما می‌تواند چندین آدرس مختلف داشته باشد. مثلاً:

در Flask، هر آدرس را با یک دکوریتور @app.route تعریف می‌کنیم.

کد زیر را به همان فایل app.py اضافه کنید (زیر تابع home):

@app.route("/about")
def about():
    return "این یک صفحهٔ سادهٔ about است."
@app.route("/hello")
def hello():
    return "سلام از مسیر /hello!"

حالا دوباره (اگر سرور در حال اجراست، لازم نیست دوباره اجرا کنید؛ ولی اگر بسته‌اید، دوباره python app.py را اجرا کنید) به این آدرس‌ها بروید:

و متن‌های تعریف‌شده را ببینید.

نکته‌های مهم این وب‌سرور ساده:

فعال کردن حالت دیباگ (برای توسعه)

برای اینکه هنگام تغییر کد لازم نباشد هر بار سرور را دستی خاموش و روشن کنید، می‌توانید حالت توسعه (Debug) را روشن کنید.

کد app.run() را به این شکل تغییر دهید:

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

حالا وقتی فایل را ذخیره کنید، Flask خودش سرور را ری‌استارت می‌کند و تغییرات را اعمال می‌کند.

هشدار کوتاه:
حالت debug=True فقط برای محیط توسعه (روی کامپیوتر خودتان) مناسب است، نه برای سرور واقعی در اینترنت.

استفاده از متغیر در آدرس‌ها (Route با پارامتر)

گاهی می‌خواهید آدرس شما بخش متغیر داشته باشد، مثل:

می‌توانیم در تعریف مسیر، یک قسمت متغیر بگذاریم. مثال:

@app.route("/user/<name>")
def user_page(name):
    return f"سلام {name} عزیز!"

حالا:

را خواهید دید.

چند نکته:

نمایش چند خط متن یا HTML ساده

تا اینجا فقط متن ساده برگرداندیم. وب‌صفحه‌ها معمولا با HTML ساخته می‌شوند. در این بخش هنوز وارد بحث Templateها نمی‌شویم، فقط نشان می‌دهیم که می‌توانید HTML را هم به عنوان رشته برگردانید.

مثال:

@app.route("/html")
def simple_html():
    return """
    <h1>سلام!</h1>
    <p>این یک صفحهٔ HTML خیلی ساده است.</p>
    <p>هنوز از قالب‌ها (Templates) استفاده نکرده‌ایم.</p>
    """

حالا با رفتن به http://127.0.0.1:5000/html می‌بینید که مرورگر HTML را تفسیر می‌کند (تیتر بزرگ، پاراگراف و ...).

در فصل بعدی («مسیرها و قالب‌ها (Templates)») یاد می‌گیرید که به‌جای نوشتن HTML در رشته‌ها، از فایل‌های جداگانه و تمیز برای قالب‌ها استفاده کنید.

بستن وب‌سرور

برای خاموش کردن وب‌سرور:

این کار اجرای سرور Flask را متوقف می‌کند.

تمرین‌های پیشنهادی

چند تمرین کوچک برای تثبیت مفاهیم این بخش:

  1. وب‌سایت سه‌صفحه‌ای کوچک
    • یک برنامهٔ Flask بسازید که سه مسیر داشته باشد:
      • / (صفحهٔ اصلی)
      • /about
      • /contact
    • هر کدام یک متن متفاوت برگردانند.
  2. آدرس با نام پویا
    • مسیری مثل /hi/<username> تعریف کنید که بنویسد:
      • سلام username، خوش آمدی!
  3. استفاده از چند خط HTML
    • مسیری بسازید که یک فهرست (<ul>) از سه آیتم مورد علاقهٔ شما (مثلاً غذا، فیلم یا شهر) را در HTML نمایش دهد.
  4. ترکیب متن ثابت و متغیر
    • مسیری بسازید مانند /square/<number> که عدد را بگیرد و مربع آن را حساب کند و نمایش دهد، مثلاً:
      • آدرس: /square/5
      • خروجی: عدد 5، مربعش 25 است.

در فصل بعدی، یاد می‌گیرید چطور این وب‌سرور ساده را با استفاده از مسیرهای بیشتر و قالب‌ها (Templates) به یک وب‌سایت مرتب‌تر و قابل‌گسترش تبدیل کنید.

Views: 5

Comments

Please login to add a comment.

Don't have an account? Register now!