ساخت پنل مدیریت با پایتون و فریم‌ورک Flask

ساخت پنل مدیریت با پایتون و فریم‌ورک Flask

پنل‌های مدیریت ابزارهای قدرتمندی هستند که به مدیران وب‌سایت‌ها و برنامه‌های کاربردی اجازه می‌دهند محتوا را مدیریت کنند، تنظیمات را تغییر دهند، کاربران را کنترل کنند و عملکرد کلی سیستم را نظارت کنند. در این مقاله، به بررسی گام به گام ساخت یک پنل مدیریت ساده با استفاده از پایتون و فریم‌ورک Flask خواهیم پرداخت. این آموزش برای توسعه‌دهندگان وب با دانش پایه پایتون مناسب است.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:

  • پایتون (نسخه 3.6 یا بالاتر)
  • فریم‌ورک Flask
  • یک ویرایشگر کد (مانند VS Code، PyCharm یا Sublime Text)
  • آشنایی با HTML، CSS و JavaScript (برای طراحی رابط کاربری)

برای نصب Flask، از دستور زیر در ترمینال استفاده کنید:

pip install Flask

مرحله اول: ایجاد ساختار پروژه

ابتدا یک پوشه برای پروژه خود ایجاد کنید. داخل این پوشه، فایل‌های زیر را ایجاد کنید:

  • app.py: فایل اصلی برنامه Flask
  • templates/: پوشه‌ای برای ذخیره فایل‌های HTML (قالب‌ها)
  • static/: پوشه‌ای برای ذخیره فایل‌های CSS، JavaScript و تصاویر

مرحله دوم: ایجاد فایل اصلی برنامه (app.py)

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

from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

# یک لیست ساده برای ذخیره کاربران (در یک برنامه واقعی از پایگاه داده استفاده می‌شود)
users = []

@app.route('/')
def index():
    return render_template('index.html', users=users)

@app.route('/add', methods=['POST'])
def add_user():
    username = request.form['username']
    users.append(username)
    return redirect(url_for('index'))

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

در این کد:

  • Flask(__name__) یک نمونه از برنامه Flask ایجاد می‌کند.
  • @app.route('/') یک مسیر (route) را تعریف می‌کند که به آدرس اصلی وب‌سایت (/) متصل می‌شود.
  • render_template('index.html', users=users) قالب index.html را رندر می‌کند و لیست کاربران را به آن ارسال می‌کند.
  • @app.route('/add', methods=['POST']) یک مسیر را برای افزودن کاربر تعریف می‌کند که فقط با متد POST قابل دسترسی است.
  • request.form['username'] نام کاربری را از فرم HTML دریافت می‌کند.
  • redirect(url_for('index')) کاربر را به صفحه اصلی هدایت می‌کند.
  • app.run(debug=True) برنامه Flask را اجرا می‌کند. حالت debug=True برای توسعه مفید است زیرا تغییرات کد را به صورت خودکار اعمال می‌کند.

مرحله سوم: ایجاد قالب HTML (index.html)

کد زیر را در فایل templates/index.html قرار دهید:

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>پنل مدیریت</title>
</head>
<body>
    <h1>لیست کاربران</h1>
    <ul>
        {% for user in users %}
            <li>{{ user }}</li>
        {% endfor %}
    </ul>

    <h2>افزودن کاربر جدید</h2>
    <form method="post" action="{{ url_for('add_user') }}">
        <label for="username">نام کاربری:</label>
        <input type="text" id="username" name="username" required>
        <button type="submit">افزودن</button>
    </form>
</body>
</html>

در این کد:

  • {% for user in users %} ... {% endfor %} یک حلقه است که روی لیست کاربران تکرار می‌شود و هر کاربر را در یک آیتم لیست نمایش می‌دهد.
  • {{ user }} مقدار متغیر user را نمایش می‌دهد.
  • <form method="post" action="{{ url_for('add_user') }}"> یک فرم HTML ایجاد می‌کند که با متد POST به مسیر /add ارسال می‌شود.
  • url_for('add_user') آدرس URL مربوط به تابع add_user را تولید می‌کند.

مرحله چهارم: اجرای برنامه

در ترمینال، به پوشه پروژه خود بروید و دستور زیر را اجرا کنید:

python app.py

سپس، مرورگر خود را باز کنید و به آدرس http://127.0.0.1:5000/ بروید. شما باید یک صفحه با عنوان “لیست کاربران” و یک فرم برای افزودن کاربر جدید مشاهده کنید.

مرحله پنجم: توسعه پنل مدیریت

این یک پنل مدیریت بسیار ساده است. برای توسعه آن، می‌توانید موارد زیر را اضافه کنید:

  • احراز هویت (Authentication): اضافه کردن سیستم ورود و ثبت‌نام برای کاربران.
  • مدیریت نقش‌ها (Role Management): تعریف نقش‌های مختلف برای کاربران (مانند مدیر، ویرایشگر، بیننده) و تعیین دسترسی‌های مختلف برای هر نقش.
  • پایگاه داده (Database): استفاده از یک پایگاه داده (مانند SQLite، MySQL یا PostgreSQL) برای ذخیره اطلاعات کاربران و سایر داده‌ها.
  • رابط کاربری پیشرفته (Advanced UI): استفاده از CSS و JavaScript برای طراحی یک رابط کاربری جذاب و کاربرپسند.
  • ویرایش و حذف کاربران: امکان ویرایش و حذف کاربران از لیست.
  • امنیت (Security): پیاده‌سازی اقدامات امنیتی برای جلوگیری از حملات (مانند XSS، CSRF و SQL Injection).

احراز هویت با Flask-Login

برای پیاده‌سازی احراز هویت، می‌توانید از کتابخانه Flask-Login استفاده کنید. ابتدا آن را نصب کنید:

pip install Flask-Login

سپس، کد app.py را به صورت زیر تغییر دهید (فقط بخش‌های مرتبط با احراز هویت):

from flask import Flask, render_template, request, redirect, url_for
from flask_login import LoginManager, UserMixin, login_user, logout_user, current_user

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key' # کلید امنیتی را تغییر دهید

login_manager = LoginManager()
login_manager.init_app(app)

# تعریف کلاس UserMixin
class User(UserMixin):
    def __init__(self, username):
        self.username = username

# یک لیست ساده برای ذخیره کاربران (در یک برنامه واقعی از پایگاه داده استفاده می‌شود)
users_data = {'admin': 'password'} # نام کاربری و رمز عبور پیش‌فرض

@login_manager.user_loader
def load_user(username):
    if username in users_data:
        return User(username)
    return None

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if username in users_data and users_data[username] == password:
            user = User(username)
            login_user(user)
            return redirect(url_for('index'))
        else:
            return render_template('login.html', error='نام کاربری یا رمز عبور اشتباه است.')
    return render_template('login.html')

@app.route('/logout')
@login_require
def logout():
    logout_user()
    return redirect(url_for('login'))

@app.route('/')
@login_require
def index():
    return render_template('index.html', users=users)

# ... (بقیه کدها)

همچنین، یک فایل templates/login.html ایجاد کنید:

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ورود</title>
</head>
<body>
    <h1>ورود</h1>
    {% if error %}
        <p style="color: red;">{{ error }}</p>
    {% endif %}
    <form method="post" action="{{ url_for('login') }}">
        <label for="username">نام کاربری:</label>
        <input type="text" id="username" name="username" required>
        <br>
        <label for="password">رمز عبور:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <button type="submit">ورود</button>
    </form>
</body>
</html>

این فقط یک مثال ساده است. در یک برنامه واقعی، باید از یک پایگاه داده برای ذخیره اطلاعات کاربران و رمزهای عبور استفاده کنید و از روش‌های امنیتی مناسب برای محافظت از اطلاعات کاربران استفاده کنید.

نتیجه‌گیری

در این مقاله، نحوه ساخت یک پنل مدیریت ساده با استفاده از پایتون و Flask را بررسی کردیم. این یک نقطه شروع خوب برای ساخت پنل‌های مدیریت پیچیده‌تر است. با استفاده از فریم‌ورک‌های دیگر مانند Django و کتابخانه‌های مختلف، می‌توانید پنل‌های مدیریت قدرتمند و کاربرپسندی ایجاد کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *