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

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

برچسب‌ها (Tags) ابزاری قدرتمند برای سازماندهی و دسته‌بندی محتوا در وب‌سایت‌ها و برنامه‌های کاربردی هستند. یک سیستم مدیریت برچسب‌ها (Tag Management System) به شما امکان می‌دهد برچسب‌ها را ایجاد، ویرایش، حذف و به محتوا اختصاص دهید. این مقاله به شما نشان می‌دهد چگونه یک سیستم مدیریت برچسب‌ها را با استفاده از پایتون و فریم‌ورک‌های وب مانند Flask یا Django بسازید. این آموزش در دسته ‘توسعه وب با پایتون’ قرار می‌گیرد و برای توسعه‌دهندگانی که با پایتون آشنایی دارند مناسب است.

مقدمه و نیازمندی‌ها

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

  • پایتون (نسخه 3.6 یا بالاتر)
  • یک فریم‌ورک وب پایتون (Flask یا Django)
  • یک پایگاه داده (مانند SQLite، PostgreSQL یا MySQL)
  • آشنایی با مفاهیم توسعه وب (HTML، CSS، JavaScript)

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

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

اولین قدم، طراحی پایگاه داده برای ذخیره برچسب‌ها و ارتباط آن‌ها با محتوا است. ما به دو جدول نیاز داریم:

  • tags: این جدول اطلاعات مربوط به برچسب‌ها را ذخیره می‌کند.
  • tag_relationships: این جدول ارتباط بین برچسب‌ها و محتوا را ذخیره می‌کند.

جدول tags:

  • id: کلید اصلی (Primary Key) – یک عدد صحیح خودکار افزاینده
  • name: نام برچسب – یک رشته
  • slug: اسلاگ برچسب – یک رشته (برای URLهای دوستانه)

جدول tag_relationships:

  • id: کلید اصلی (Primary Key) – یک عدد صحیح خودکار افزاینده
  • content_id: شناسه محتوا – یک عدد صحیح (کلید خارجی به جدول محتوا)
  • tag_id: شناسه برچسب – یک عدد صحیح (کلید خارجی به جدول tags)

پیاده‌سازی با Flask

حالا بیایید شروع به پیاده‌سازی سیستم مدیریت برچسب‌ها با Flask کنیم.

نصب Flask و SQLAlchemy

ابتدا Flask و SQLAlchemy (یک ابزار ORM برای کار با پایگاه داده) را نصب کنید:

pip install flask sqlalchemy

ایجاد فایل‌های پروژه

یک دایرکتوری برای پروژه خود ایجاد کنید و فایل‌های زیر را در آن قرار دهید:

  • app.py: فایل اصلی برنامه Flask
  • models.py: فایل تعریف مدل‌های پایگاه داده
  • templates: دایرکتوری برای فایل‌های HTML

تعریف مدل‌های پایگاه داده (models.py)

در فایل models.py، مدل‌های پایگاه داده را تعریف کنید:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True, nullable=False)
    slug = db.Column(db.String(80), unique=True, nullable=False)

    def __repr__(self):
        return f''

class TagRelationship(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    content_id = db.Column(db.Integer, nullable=False)
    tag_id = db.Column(db.Integer, db.ForeignKey('tag.id'), nullable=False)

    tag = db.relationship('Tag', backref='tag_relationships')

ایجاد برنامه Flask (app.py)

در فایل app.py، برنامه Flask را ایجاد کنید و پایگاه داده را پیکربندی کنید:

from flask import Flask, render_template, request, redirect, url_for
from models import db, Tag, TagRelationship

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tags.db'  # استفاده از SQLite
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)

@app.route('/')
def index():
    tags = Tag.query.all()
    return render_template('index.html', tags=tags)

@app.route('/add', methods=['GET', 'POST'])
def add_tag():
    if request.method == 'POST':
        name = request.form['name']
        slug = request.form['slug']
        tag = Tag(name=name, slug=slug)
        db.session.add(tag)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('add_tag.html')

@app.route('/tag/')
def tag_detail(slug):
    tag = Tag.query.filter_by(slug=slug).first()
    if tag:
        return render_template('tag_detail.html', tag=tag)
    else:
        return "Tag not found", 404

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

ایجاد قالب‌های HTML (templates)

در دایرکتوری templates، فایل‌های HTML زیر را ایجاد کنید:

  • index.html: نمایش لیست برچسب‌ها
  • add_tag.html: فرم افزودن برچسب جدید
  • tag_detail.html: نمایش جزئیات یک برچسب

index.html:

<!DOCTYPE html>
<html>
<head>
    <title>لیست برچسب‌ها</title>
</head>
<body>
    <h1>لیست برچسب‌ها</h1>
    <a href="{{ url_for('add_tag') }}">افزودن برچسب جدید</a>
    <ul>
        {% for tag in tags %}
            <li><a href="{{ url_for('tag_detail', slug=tag.slug) }}">{{ tag.name }}</a></li>
        {% endfor %}
    </ul>
</body>
</html>

add_tag.html:

<!DOCTYPE html>
<html>
<head>
    <title>افزودن برچسب جدید</title>
</head>
<body>
    <h1>افزودن برچسب جدید</h1>
    <form method="post">
        <label for="name">نام برچسب:</label>
        <input type="text" id="name" name="name" required><br>
        <label for="slug">اسلاگ برچسب:</label>
        <input type="text" id="slug" name="slug" required><br>
        <button type="submit">افزودن</button>
    </form>
    <a href="{{ url_for('index') }}">بازگشت به لیست برچسب‌ها</a>
</body>
</html>

tag_detail.html:

<!DOCTYPE html>
<html>
<head>
    <title>{{ tag.name }}</title>
</head>
<body>
    <h1>{{ tag.name }}</h1>
    <p>اسلاگ: {{ tag.slug }}</p>
    <a href="{{ url_for('index') }}">بازگشت به لیست برچسب‌ها</a>
</body>
</html>

اجرا و تست

حالا می‌توانید برنامه Flask را اجرا کنید:

python app.py

به آدرس http://127.0.0.1:5000/ در مرورگر خود بروید. شما باید لیست برچسب‌ها را ببینید. می‌توانید برچسب‌های جدید اضافه کنید و جزئیات هر برچسب را مشاهده کنید.

گام‌های بعدی

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

  • ویرایش و حذف برچسب‌ها
  • ارتباط برچسب‌ها با محتوا (مقالات، پست‌ها و غیره)
  • جستجو و فیلتر برچسب‌ها
  • استفاده از یک رابط کاربری جذاب‌تر با استفاده از CSS و JavaScript
  • پیاده‌سازی اعتبارسنجی ورودی

همچنین، می‌توانید از فریم‌ورک‌های پیشرفته‌تری مانند Django برای ساخت یک سیستم مدیریت برچسب‌های پیچیده‌تر استفاده کنید.

بدون دیدگاه

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

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