ساخت سیستم مدیریت دستهبندیها با پایتون و توسعه وب
در توسعه وب، سازماندهی محتوا یکی از مهمترین جنبههاست. دستهبندیها نقش کلیدی در این سازماندهی ایفا میکنند و به کاربران کمک میکنند تا به راحتی اطلاعات مورد نیاز خود را پیدا کنند. این مقاله به بررسی نحوه ساخت یک سیستم مدیریت دستهبندیها با استفاده از پایتون و فریمورکهای توسعه وب مرتبط میپردازد. این آموزش در دسته ‘توسعه وب با پایتون’ قرار میگیرد و برای توسعهدهندگانی که قصد دارند قابلیتهای مدیریت دستهبندی را به وبسایتهای خود اضافه کنند، مفید خواهد بود.
مقدمه
یک سیستم مدیریت دستهبندی (Category Management System) به شما امکان میدهد تا دستهبندیهای مختلفی را ایجاد، ویرایش و حذف کنید. این دستهبندیها میتوانند برای سازماندهی مقالات، محصولات، یا هر نوع محتوای دیگری در وبسایت شما استفاده شوند. یک سیستم خوب مدیریت دستهبندی باید ویژگیهای زیر را داشته باشد:
- قابلیت ایجاد دستهبندیهای جدید
- قابلیت ویرایش اطلاعات دستهبندیها (نام، توضیحات، ترتیب نمایش و غیره)
- قابلیت حذف دستهبندیها
- امکان ایجاد ساختار درختی از دستهبندیها (دستهبندیهای اصلی و زیردستهبندیها)
- امکان اختصاص دستهبندیها به محتوا
انتخاب فریمورک پایتون
برای ساخت این سیستم، میتوان از فریمورکهای مختلف پایتون استفاده کرد. دو فریمورک محبوب Django و Flask هستند. Django یک فریمورک فولاستک است که ابزارهای زیادی را برای توسعه وب فراهم میکند، در حالی که Flask یک فریمورک سبکتر و انعطافپذیرتر است. انتخاب فریمورک به نیازهای پروژه شما بستگی دارد. برای پروژههای بزرگ و پیچیده، Django گزینه مناسبتری است، در حالی که برای پروژههای کوچک و ساده، Flask میتواند کافی باشد. در این آموزش، فرض میکنیم که از Flask استفاده میکنیم، زیرا سادگی آن به درک مفاهیم اصلی کمک میکند.
طراحی پایگاه داده
برای ذخیره اطلاعات دستهبندیها، به یک پایگاه داده نیاز داریم. میتوان از پایگاه دادههای مختلفی مانند SQLite، MySQL، PostgreSQL و غیره استفاده کرد. SQLite یک پایگاه داده سبک و فایلمحور است که برای پروژههای کوچک مناسب است. در اینجا، یک طراحی ساده برای پایگاه داده SQLite ارائه میدهیم:
جدول categories:
- id (INTEGER PRIMARY KEY AUTOINCREMENT): شناسه یکتا برای هر دستهبندی
- name (TEXT NOT NULL): نام دستهبندی
- description (TEXT): توضیحات دستهبندی
- parent_id (INTEGER): شناسه دستهبندی والد (برای ایجاد ساختار درختی)
- order (INTEGER): ترتیب نمایش دستهبندی
پیادهسازی سیستم مدیریت دستهبندیها با Flask
در این بخش، نحوه پیادهسازی سیستم مدیریت دستهبندیها با استفاده از Flask و SQLite را بررسی میکنیم.
راهاندازی پروژه
ابتدا، یک پروژه Flask جدید ایجاد کنید:
mkdir category_management cd category_management python3 -m venv venv source venv/bin/activate pip install flask flask-sqlalchemy
ایجاد مدل دستهبندی
یک فایل به نام models.py ایجاد کنید و مدل دستهبندی را در آن تعریف کنید:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Category(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
description = db.Column(db.Text)
parent_id = db.Column(db.Integer, db.ForeignKey('category.id'))
order = db.Column(db.Integer)
parent = db.relationship("Category", remote_side=[id])
def __repr__(self):
return f''
ایجاد فایل اصلی برنامه
یک فایل به نام app.py ایجاد کنید و برنامه Flask را در آن تعریف کنید:
from flask import Flask, render_template, request, redirect, url_for
from models import db, Category
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///categories.db'
db.init_app(app)
with app.app_context():
db.create_all()
@app.route('/')
def index():
categories = Category.query.all()
return render_template('index.html', categories=categories)
@app.route('/add', methods=['GET', 'POST'])
def add_category():
if request.method == 'POST':
name = request.form['name']
description = request.form['description']
parent_id = request.form.get('parent_id')
order = request.form.get('order', 0)
new_category = Category(name=name, description=description, parent_id=parent_id, order=order)
db.session.add(new_category)
db.session.commit()
return redirect(url_for('index'))
return render_template('add.html')
@app.route('/edit/', methods=['GET', 'POST'])
def edit_category(category_id):
category = Category.query.get_or_404(category_id)
if request.method == 'POST':
category.name = request.form['name']
category.description = request.form['description']
category.parent_id = request.form.get('parent_id')
category.order = request.form.get('order', 0)
db.session.commit()
return redirect(url_for('index'))
return render_template('edit.html', category=category)
@app.route('/delete/')
def delete_category(category_id):
category = Category.query.get_or_404(category_id)
db.session.delete(category)
db.session.commit()
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
ایجاد قالبها (Templates)
فایلهای HTML برای نمایش رابط کاربری ایجاد کنید. به عنوان مثال، index.html برای نمایش لیست دستهبندیها، add.html برای افزودن دستهبندی جدید، و edit.html برای ویرایش دستهبندیها.
index.html:
مدیریت دستهبندیها
دستهبندیها
افزودن دستهبندی جدید
add.html:
افزودن دستهبندی جدید
افزودن دستهبندی جدید
ندارد
{% for category in categories %}
{{ category.name }}
{% endfor %}
edit.html:
ویرایش دستهبندی
ویرایش دستهبندی
ندارد
{% for cat in categories %}
{{ cat.name }}
{% endfor %}
اجرای برنامه
با اجرای برنامه Flask، میتوانید به رابط کاربری سیستم مدیریت دستهبندیها دسترسی پیدا کنید. با استفاده از این رابط کاربری، میتوانید دستهبندیهای جدید ایجاد کنید، اطلاعات دستهبندیها را ویرایش کنید و دستهبندیها را حذف کنید.
نتیجهگیری
در این مقاله، نحوه ساخت یک سیستم مدیریت دستهبندیها با استفاده از پایتون و Flask را بررسی کردیم. این سیستم میتواند به شما کمک کند تا محتوای وبسایت خود را به طور موثر سازماندهی کنید و تجربه کاربری بهتری را برای بازدیدکنندگان خود فراهم کنید. با استفاده از این آموزش، میتوانید یک پایه قوی برای ساخت سیستمهای مدیریت دستهبندیهای پیچیدهتر ایجاد کنید.

بدون دیدگاه