Django

روز ۲۰: پروژه کوچک ساخت سیستم مدیریت مقالات در جنگو

یکی از بهترین روش‌ها برای تمرین مهارت‌های جنگو، ساخت یک سیستم مدیریت مقالات ساده است که شامل مدل‌ها، فرم‌ها، نمایش داده‌ها و مدیریت محتوا باشد. این پروژه کوچک باعث می‌شود مفاهیم پایه‌ای مانند مدل‌ها، Viewها، Templateها، روابط مدل‌ها و مدیریت داده‌ها به صورت عملی مرور شوند. با پیاده‌سازی یک Blog ساده می‌توان تجربه کاربری داینامیک ایجاد کرد و یاد گرفت چگونه داده‌ها را ذخیره، نمایش و مدیریت کنیم. این پروژه همچنین زمینه مناسبی برای تمرین فیلتر، مرتب‌سازی و استفاده از جنگو Admin فراهم می‌کند.

طراحی مدل‌های Blog

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

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

در این مدل، هر مقاله به یک نویسنده مرتبط است و با استفاده از ForeignKey رابطه یک به چند بین نویسنده و مقالات برقرار شده است. همچنین تاریخ ایجاد و بروزرسانی خودکار برای مدیریت محتوا لحاظ شده است.

ثبت مدل در جنگو Admin

پس از تعریف مدل، آن را در Admin ثبت می‌کنیم تا بتوانیم مقالات را مدیریت و داده‌های تستی وارد کنیم. ثبت مدل در Admin باعث می‌شود مدیریت محتوا ساده و کارآمد باشد و بدون ایجاد صفحات فرم، مقالات را بررسی و ویرایش کنیم.

from django.contrib import admin
from .models import Post

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'created_at')
    search_fields = ('title', 'content')
    list_filter = ('created_at',)

admin.site.register(Post, PostAdmin)

این کد باعث می‌شود مقالات در پنل مدیریت مرتب، قابل جستجو و فیلتر شده نمایش داده شوند و مدیریت آن‌ها حرفه‌ای و استاندارد انجام شود.
ایجاد Viewها برای نمایش مقالات

برای نمایش مقالات در صفحات وب، از Viewها استفاده می‌کنیم. می‌توان یک View برای نمایش لیست مقالات و یک View برای نمایش جزئیات هر مقاله ایجاد کرد. استفاده از Viewها باعث می‌شود داده‌ها به صورت داینامیک در Templateها نمایش داده شوند و پروژه کاربرپسند و استاندارد باشد.

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by('-created_at')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

در این مثال، مقالات بر اساس تاریخ ایجاد مرتب شده و برای نمایش جزئیات از get_object_or_404 استفاده شده است تا در صورت عدم وجود مقاله، خطای ۴۰۴ نمایش داده شود.

طراحی Templateها و نمایش محتوا

Templateها بخش مهمی از پروژه Blog هستند که محتوا را به کاربران نشان می‌دهند. با استفاده از Templateها می‌توان داده‌ها را مرتب، خوانا و داینامیک نمایش داد و صفحات پروژه استاندارد و کاربرپسند ساخت.

<!-- blog/post_list.html -->
{% extends 'base.html' %}
{% block content %}
<h1>لیست مقالات</h1>
<ul>
    {% for post in posts %}
        <li><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a> - {{ post.author.username }}</li>
    {% endfor %}
</ul>
{% endblock %}
<!-- blog/post_detail.html -->
{% extends 'base.html' %}
{% block content %}
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
<p>نویسنده: {{ post.author.username }} | تاریخ انتشار: {{ post.created_at }}</p>
{% endblock %}

این Templateها باعث می‌شوند مقالات به صورت مرتب و استاندارد نمایش داده شوند و کاربران تجربه خوبی از سایت داشته باشند.

افزودن URLها و مسیریابی

برای دسترسی به صفحات Blog، باید URLها را تعریف کنیم. استفاده از path و include باعث می‌شود پروژه سازمان‌یافته و قابل توسعه باقی بماند و هر View به مسیر مشخصی مرتبط شود.

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('<int:pk>/', views.post_detail, name='post_detail'),
]

این تعریف URLها باعث می‌شود صفحات لیست مقالات و جزئیات هر مقاله به راحتی قابل دسترسی باشند و ساختار پروژه استاندارد باقی بماند.

جمع‌بندی پروژه Blog ساده

در این پروژه کوچک، یک سیستم مدیریت مقالات ساده با استفاده از جنگو ایجاد شد. مدل‌ها، Viewها، Templateها، URLها و پنل Admin پیاده‌سازی شدند و امکان افزودن، نمایش و مدیریت مقالات فراهم شد. این پروژه تمرینی باعث می‌شود مهارت‌های عملی جنگو تقویت شود و آماده ورود به پروژه‌های پیچیده‌تر و حرفه‌ای باشیم. با تسلط بر این بخش، می‌توان صفحات داینامیک و سیستم‌های مدیریت محتوا استاندارد ساخت و مهارت‌های توسعه وب را به شکل عملی و کاربردی ارتقا داد.

نوشته های مشابه

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

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

دو × 4 =

دکمه بازگشت به بالا