Kahibaro
Discord Login Register

فصل ۱۵: توسعهٔ وب با پایتون

نمای کلی توسعهٔ وب با پایتون

در این فصل یک تصویر کلی از توسعهٔ وب با پایتون می‌بینید و با حداقل کدنویسی، یک وب‌سرور بسیار ساده می‌سازید. هدف این فصل این نیست که شما را به یک برنامه‌نویس حرفه‌ای وب تبدیل کند، بلکه می‌خواهیم:

برای دنبال کردن مثال‌ها، کافی است پایتون نصب باشد و بتوانید اسکریپت اجرا کنید (مطالب فصل‌های قبل).


وب چگونه کار می‌کند؟ (خلاصهٔ عملی)

اینجا فقط آن‌قدری که برای کار با پایتون لازم است، به کارکرد وب اشاره می‌کنیم.

مرورگر، سرور و HTTP

وقتی در مرورگر آدرس وارد می‌کنید، مثل:

$$
\text{https://example.com/hello}
$$

چند اتفاق می‌افتد:

  1. مرورگر (Client) یک درخواست (Request) می‌سازد.
  2. این درخواست با «پروتکل HTTP/HTTPS» به سرور ارسال می‌شود.
  3. سرور کدی اجرا می‌کند (مثلاً کد پایتون شما) و یک پاسخ (Response) برمی‌گرداند.
  4. مرورگر این پاسخ را نمایش می‌دهد (مثلاً به صورت یک صفحهٔ HTML).

پس رابطهٔ اصلی این است:

$$
\text{Client} \xrightarrow{\text{Request}} \text{Server} \xrightarrow{\text{Response}} \text{Client}
$$

آدرس‌ها و مسیرها (URL و Route)

در یک سایت، آدرس‌ها (URL) بخش‌های مختلفی دارند. برای مثال:

در فریم‌ورکی مثل Flask، شما برای هر آدرس یک «مسیر» (route) تعریف می‌کنید و می‌گویید اگر کاربر به این آدرس آمد، چه کدی اجرا شود.


آشنایی با Flask

Flask یک فریم‌ورک سبک و ساده برای توسعهٔ وب با پایتون است؛ یعنی یک کتابخانه که کار ساخت وب‌سرور و مدیریت درخواست‌ها و پاسخ‌ها را برای شما آسان می‌کند.

ویژگی‌های مهم Flask برای مبتدی‌ها:

نصب Flask

در یک ترمینال (یا CMD در ویندوز) بنویسید:

bash
pip install flask

اگر از python -m pip استفاده می‌کنید:

bash
python -m pip install flask

بعد از نصب، می‌توانید در پایتون بنویسید:

python
import flask

و اگر خطایی نداشت، یعنی نصب موفق بوده است.


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

اینجا یک مثال «حداقلی» از یک برنامهٔ وب با Flask می‌سازیم.

قدم ۱: ساخت فایل پروژه

یک پوشهٔ جدید بسازید، مثلاً:

داخل آن یک فایل پایتون بسازید، مثلاً: app.py

قدم ۲: نوشتن یک برنامهٔ وب ساده

محتوای app.py را این‌طور بنویسید:

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

توضیح کوتاه بخش‌های مهم:

قدم ۳: اجرای سرور

در ترمینال، وارد پوشهٔ پروژه شوید و اجرا کنید:

bash
python app.py

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

text
 * Running on http://127.0.0.1:5000

حالا در مرورگر این آدرس را بزنید:

text
http://127.0.0.1:5000

باید متن:

text
سلام، این اولین وب‌سایت پایتونی من است!

را ببینید.

تا وقتی این ترمینال باز و برنامه در حال اجراست، سرور شما فعال است. با زدن Ctrl + C در ترمینال، سرور متوقف می‌شود.


مسیرها (Routes) و چند صفحه‌ای کردن سایت

در وب‌سایت‌ها معمولاً بیش از یک صفحه وجود دارد. در Flask می‌توانید برای آدرس‌های مختلف، توابع جدا تعریف کنید.

مثال: افزودن یک صفحهٔ «درباره ما» و یک صفحهٔ «سلام به کاربر»

from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
    return "صفحهٔ اصلی سایت"
@app.route("/about")
def about():
    return "این یک وب‌سایت آزمایشی با پایتون و Flask است."
@app.route("/hello")
def hello():
    return "سلام از طرف Flask!"
if __name__ == "__main__":
    app.run(debug=True)

حالا می‌توانید در مرورگر این آدرس‌ها را ببینید:

متغیر در مسیر (Route Parameters)

گاهی آدرس شامل یک قسمت متغیر است، مثلاً:

می‌توانیم نام کاربر را از آدرس بگیریم:

from flask import Flask
app = Flask(__name__)
@app.route("/user/<name>")
def greet_user(name):
    return f"سلام {name}، خوش آمدی!"
if __name__ == "__main__":
    app.run(debug=True)

با رفتن به:

پیام‌های متفاوت می‌بینید که بر اساس name ساخته شده‌اند.


قالب‌ها (Templates) و HTML

تا اینجا فقط متن ساده برمی‌گرداندیم. اما صفحات واقعی وب معمولاً با HTML ساخته می‌شوند. در Flask می‌توانیم از قالب‌ها (templates) استفاده کنیم.

Flask از موتور قالبی به نام Jinja2 استفاده می‌کند که اجازه می‌دهد در فایل‌های HTML از متغیرها و حلقه‌ها (در سطح ساده) استفاده کنید.

ساخت پوشهٔ templates

در کنار app.py یک پوشه به نام templates بسازید. ساختار پروژه:

text
my_first_webapp/
    app.py
    templates/

حالا داخل پوشهٔ templates یک فایل به نام home.html بسازید.

نمونهٔ یک قالب HTML ساده

محتوای home.html:

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <title>صفحهٔ اصلی</title>
</head>
<body>
    <h1>سلام {{ name }}!</h1>
    <p>این صفحه با استفاده از یک قالب HTML ساخته شده است.</p>
</body>
</html>

عبارت {{ name }} یعنی یک متغیر که مقدارش را از پایتون می‌گیریم.

استفاده از قالب در Flask

حالا app.py را این‌طور تغییر دهید:

from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
    return render_template("home.html", name="کاربر عزیز")
if __name__ == "__main__":
    app.run(debug=True)

می‌توانید مقدار name را برای کاربرهای مختلف تغییر دهید، یا در آینده از ورودی کاربر بگیرید.


پردازش ورودی کاربر (فرم‌ها)

یکی از مهم‌ترین کارهای یک برنامهٔ وب، گرفتن ورودی از کاربر است؛ مثل فرم ورود، فرم جست‌وجو، فرم ثبت‌نام و غیره.

در وب، برای این کار از فرم‌های HTML و روش‌های ارسال داده مثل GET و POST استفاده می‌شود.

یک فرم سادهٔ HTML

یک فایل قالب جدید در templates بسازید: form.html

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <title>فرم سلام</title>
</head>
<body>
    <h1>فرم سلام</h1>
    <form method="post">
        <label>نام شما:</label>
        <input type="text" name="username">
        <button type="submit">ارسال</button>
    </form>
    {% if message %}
        <p>{{ message }}</p>
    {% endif %}
</body>
</html>

چند نکته:

گرفتن دادهٔ فرم در Flask

فایل app.py را به این صورت گسترش می‌دهیم:

from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def form_page():
    message = ""
    if request.method == "POST":
        username = request.form.get("username", "")
        if username:
            message = f"سلام {username}!"
        else:
            message = "لطفاً نام خود را وارد کنید."
    return render_template("form.html", message=message)
if __name__ == "__main__":
    app.run(debug=True)

توابع جدید:

رفتار:

API های بسیار ساده

API (رابط برنامه‌نویسی کاربردی) یعنی روشی برای این‌که برنامه‌ها با هم صحبت کنند. در وب، معمولاً APIها داده را به صورت JSON رد و بدل می‌کنند، نه HTML.

در یک API ساده، به‌جای برگرداندن یک صفحهٔ وب، دادهٔ خام برمی‌گردانیم که برای انسان شاید چندان زیبا نباشد، اما برای برنامه‌ها قابل استفاده است.

یک API کوچک با Flask

مثلاً می‌خواهیم یک آدرس داشته باشیم که اطلاعات یک کاربر را در قالب JSON برگرداند.

from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/api/user/<name>")
def api_user(name):
    data = {
        "name": name,
        "message": f"سلام {name}",
        "length_of_name": len(name)
    }
    return jsonify(data)
if __name__ == "__main__":
    app.run(debug=True)

وقتی به آدرسی مثل:

text
http://127.0.0.1:5000/api/user/ali

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

json
{
  "length_of_name": 3,
  "message": "سلام ali",
  "name": "ali"
}

این دیگر HTML نیست، بلکه JSON است که برنامه‌های دیگر (مثلاً یک اپ موبایل) می‌توانند از آن استفاده کنند.


جمع‌بندی فصل

در این فصل:

در فصل‌های پروژه و گام‌های بعدی، می‌توانید یکی از پروژه‌ها را به شکل «وبی» بسازید و از همین مبانی Flask استفاده کنید؛ مثلاً:

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!