ساخت سیستم مدیریت برچسبها با پایتون و فریمورکهای وب
برچسبها (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 برای ساخت یک سیستم مدیریت برچسبهای پیچیدهتر استفاده کنید.

بدون دیدگاه