ساخت سیستم مدیریت تنظیمات با پایتون و Flask

ساخت سیستم مدیریت تنظیمات با پایتون و Flask

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

پیش‌نیازها

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

  • پایتون (نسخه 3.6 یا بالاتر)
  • Flask
  • SQLite

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

pip install Flask

طراحی پایگاه داده

برای ذخیره تنظیمات، از یک پایگاه داده SQLite استفاده می‌کنیم. ساختار پایگاه داده بسیار ساده خواهد بود. یک جدول به نام ‘settings’ با دو ستون ‘key’ و ‘value’ خواهیم داشت. ستون ‘key’ نام تنظیم را ذخیره می‌کند و ستون ‘value’ مقدار تنظیم را ذخیره می‌کند.

برای ایجاد پایگاه داده و جدول، می‌توانید از کد پایتون زیر استفاده کنید:

import sqlite3

def create_table():
    conn = sqlite3.connect('settings.db')
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS settings (
            key TEXT PRIMARY KEY,
            value TEXT
        )
    ''')
    conn.commit()
    conn.close()

if __name__ == '__main__':
    create_table()

ایجاد برنامه Flask

اکنون، برنامه Flask را ایجاد می‌کنیم. برنامه شامل مسیرهایی برای افزودن، ویرایش، حذف و نمایش تنظیمات خواهد بود.

وارد کردن کتابخانه‌ها

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

ایجاد برنامه Flask

app = Flask(__name__)

مسیر اصلی (نمایش تنظیمات)

@app.route('/')
def index():
    conn = sqlite3.connect('settings.db')
    cursor = conn.cursor()
    cursor.execute('SELECT key, value FROM settings')
    settings = cursor.fetchall()
    conn.close()
    return render_template('index.html', settings=settings)

مسیر افزودن تنظیمات

@app.route('/add', methods=['GET', 'POST'])
def add():
    if request.method == 'POST':
        key = request.form['key']
        value = request.form['value']
        conn = sqlite3.connect('settings.db')
        cursor = conn.cursor()
        try:
            cursor.execute('INSERT INTO settings (key, value) VALUES (?, ?)', (key, value))
            conn.commit()
        except sqlite3.IntegrityError:
            return "کلید تنظیمات از قبل وجود دارد."
        conn.close()
        return redirect(url_for('index'))
    return render_template('add.html')

مسیر ویرایش تنظیمات

@app.route('/edit/', methods=['GET', 'POST'])
def edit(key):
    conn = sqlite3.connect('settings.db')
    cursor = conn.cursor()
    cursor.execute('SELECT value FROM settings WHERE key = ?', (key,))
    setting = cursor.fetchone()
    conn.close()

    if setting is None:
        return "تنظیمات یافت نشد."

    if request.method == 'POST':
        value = request.form['value']
        conn = sqlite3.connect('settings.db')
        cursor = conn.cursor()
        cursor.execute('UPDATE settings SET value = ? WHERE key = ?', (value, key))
        conn.commit()
        conn.close()
        return redirect(url_for('index'))
    return render_template('edit.html', key=key, value=setting[0])

مسیر حذف تنظیمات

@app.route('/delete/')
def delete(key):
    conn = sqlite3.connect('settings.db')
    cursor = conn.cursor()
    cursor.execute('DELETE FROM settings WHERE key = ?', (key,))
    conn.commit()
    conn.close()
    return redirect(url_for('index'))

اجرای برنامه

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

ایجاد قالب‌های HTML

اکنون باید قالب‌های HTML را برای نمایش و ویرایش تنظیمات ایجاد کنیم. این قالب‌ها در پوشه ‘templates’ قرار می‌گیرند.

index.html

<!DOCTYPE html>
<html>
<head>
    <title>مدیریت تنظیمات</title>
</head>
<body>
    <h1>تنظیمات</h1>
    <a href="{{ url_for('add') }}">افزودن تنظیمات جدید</a>
    <table>
        <thead>
            <tr>
                <th>کلید</th>
                <th>مقدار</th>
                <th>عملیات</th>
            </tr>
        </thead>
        <tbody>
            {% for key, value in settings %}
                <tr>
                    <td>{{ key }}</td>
                    <td>{{ value }}</td>
                    <td>
                        <a href="{{ url_for('edit', key=key) }}">ویرایش</a> | <a href="{{ url_for('delete', key=key) }}">حذف</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

add.html

<!DOCTYPE html>
<html>
<head>
    <title>افزودن تنظیمات</title>
</head>
<body>
    <h1>افزودن تنظیمات جدید</h1>
    <form method="post">
        <label for="key">کلید:</label><br>
        <input type="text" id="key" name="key" required><br><br>

        <label for="value">مقدار:</label><br>
        <input type="text" id="value" name="value" required><br><br>

        <input type="submit" value="ذخیره">
    </form>
    <a href="{{ url_for('index') }}">بازگشت</a>
</body>
</html>

edit.html

<!DOCTYPE html>
<html>
<head>
    <title>ویرایش تنظیمات</title>
</head>
<body>
    <h1>ویرایش تنظیمات</h1>
    <form method="post">
        <label for="value">مقدار:</label><br>
        <input type="text" id="value" name="value" value="{{ value }}" required><br><br>

        <input type="submit" value="ذخیره">
    </form>
    <a href="{{ url_for('index') }}">بازگشت</a>
</body>
</html>

نحوه استفاده

1. فایل‌های پایتون و HTML را در پوشه‌های مناسب قرار دهید.

2. برنامه Flask را اجرا کنید.

3. از طریق مرورگر به آدرس http://127.0.0.1:5000/ دسترسی پیدا کنید.

نکات تکمیلی

این یک سیستم مدیریت تنظیمات بسیار ساده است. می‌توانید آن را با افزودن ویژگی‌های زیر بهبود بخشید:

  • اعتبارسنجی ورودی
  • پشتیبانی از انواع داده‌های مختلف (مانند اعداد، بولین‌ها و غیره)
  • امنیت بیشتر (مانند رمزگذاری تنظیمات حساس)
  • استفاده از یک پایگاه داده قوی‌تر (مانند PostgreSQL یا MySQL)
  • ایجاد یک رابط کاربری جذاب‌تر

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

بدون دیدگاه

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

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