picha

Python seomo la 55: Kutengeneza Simple Admin Dashboard ya CRUD

Katika somo hili tutajifunza jinsi ya kuunda dashboard rahisi ndani ya Django ambayo itaruhusu mtumiaji kuongeza, kusoma, kuhariri na kufuta taarifa za MenuItem bila kutumia Django built-in admin, bali kwa kutumia HTML templates na views tulizotengeneza sisi wenyewe.

Utangulizi wa somo…

Dashboard hutoa njia rahisi ya kusimamia data. Badala ya kutumia Django admin, leo tutajenga dashboard yetu wenyewe inayomruhusu admin kuongeza, kuhariri na kufuta taarifa za chakula.


Sasa tuingie kwenye somo letu…

1. Kusudi la Admin Dashboard

Dashboard tunayotengeneza itakuwa sehemu ambayo mtumiaji (mfanyakazi au admin wa hoteli) ataweza:

Hii ndiyo CRUD (Create, Read, Update, Delete).


2. Kutengeneza View ya Dashboard (List of Items)

Katika views.py tengeneza view ya kuonyesha dashboard:

from django.shortcuts import render, get_object_or_404, redirect
from .models import MenuItem

def dashboard(request):
    items = MenuItem.objects.all()
    return render(request, 'dashboard.html', {'items': items})

3. Kutengeneza Template ya Dashboard

Faili: dashboard.html

<!DOCTYPE html>
<html>
<head>
    <title>Dashboard ya Menu</title>
</head>
<body>

<h2>Dashboard – Orodha ya Vyakula</h2>

<a href="{% url 'add_item' %}">Ongeza Kitu Kipya</a>

<table border="1" cellpadding="6">
    <tr>
        <th>Jina</th>
        <th>Muda Upatikanaji</th>
        <th>Bei (TZS)</th>
        <th>Hatua</th>
    </tr>

    {% for item in items %}
    <tr>
        <td>{{ item.jina }}</td>
        <td>{{ item.muda_upatikanaji }}</td>
        <td>{{ item.bei }}</td>
        <td>
            <a href="{% url 'edit_item' item.id %}">Edit</a> |
            <a href="{% url 'delete_item' item.id %}">Delete</a>
        </td>
    </tr>
    {% endfor %}

</table>

</body>
</html>

4. Kutengeneza View ya Kuongeza Data (Create)

def add_item(request):
    if request.method == 'POST':
        jina = request.POST.get('jina')
        maelezo = request.POST.get('maelezo')
        muda = request.POST.get('muda_upatikanaji')
        bei = request.POST.get('bei')

        MenuItem.objects.create(
            jina=jina,
            maelezo=maelezo,
            muda_upatikanaji=muda,
            bei=bei
        )

        return redirect('dashboard')

    return render(request, 'add_item.html')

Template — add_item.html

<h2>Ongeza Kitu Kipya</h2>

<form method="POST">
    {% csrf_token %}

    <label>Jina:</label>
    <input type="text" name="jina"><br>

    <label>Maelezo:</label>
    <textarea name="maelezo"></textarea><br>

    <label>Muda Upatikanaji:</label>
    <input type="text" name="muda_upatikanaji"><br>

    <label>Bei (TZS):</label>
    <input type="number" step="0.01" name="bei"><br>

    <button type="submit">Hifadhi</button>
</form>

5. Kutengeneza View ya Kuhariri Data (Update)

def edit_item(request, id):
    item = get_object_or_404(MenuItem, id=id)

    if request.method == 'POST':
        item.jina = request.POST.get('jina')
        item.maelezo = request.POST.get('maelezo')
        item.muda_upatikanaji = request.POST.get('muda_upatikanaji')
        item.bei = request.POST.get('bei')
        item.save()

        return redirect('dashboard')

    return render(request, 'edit_item.html', {'item': item})

Template — edit_item.html

<h2>Hariri Kitu: {{ item.jina }}</h2>

<form method="POST">
    {% csrf_token %}

    <label>Jina:</label>
    <input type="text" name="jina" value="{{ item.jina }}"><br>

    <label>Maelezo:</label>
    <textarea name="maelezo">{{ item.maelezo }}</textarea><br>

    <label>Muda Upatikanaji:</label>
    <input type="text" name="muda_upatikanaji" value="{{ item.muda_upatikanaji }}"><br>

    <label>Bei:</label>
    <input type="number" step="0.01" name="bei" value="{{ item.bei }}"><br>

    <button type="submit">Hifadhi</button>
</form>

6. Kutengeneza View ya Kufuta Data (Delete)

def delete_item(request, id):
    item = get_object_or_404(MenuItem, id=id)
    item.delete()
    return redirect('dashboard')

7. Kuongeza URL Patterns

Kwenye urls.py:

path('dashboard/', views.dashboard, name='dashboard'),
path('add/', views.add_item, name='add_item'),
path('edit/<int:id>/', views.edit_item, name='edit_item'),
path('delete/<int:id>/', views.delete_item, name='delete_item'),

...

Jiunge nasi WhatsApp kupata update zetu

Zoezi la Maswali

Nyuma Endelea


Umeionaje Makala hii.. ?

Nzuri            Mbaya            Save
Author: Rajabu image Tarehe: 2025-11-23 Topic: Python Main: ICT File: Download PDF Views 429

Share On:

Facebook WhatsApp
Sponsored links
👉1 ai web app    👉2 Bongolite - Game zone - Play free game    👉3 Kitabu cha Afya    👉4 Kitau cha Fiqh    👉5 Madrasa kiganjani    👉6 Tafasiri ya Riyadh Swalihina   

Post zinazofanana:

PYHON - somo la 5: Aina za data list, turple, dictionary na boolean

Katika somo hili tunakwenda kujifunza aina nyingine za data ambazo hutumika kwenye python.

Soma Zaidi...
Pthon somo la 41: Template Inheritance katika Django

Somo hili linazungumzia hatua ya kuunda navigation menu na kutumia template inheritance kwa njia ya kitaalamu katika Django.

Soma Zaidi...
Python somo la 39: Jinsi ya Kuongeza Kurasa Nyingine Katika Django View

Katika somo hili utakwenda kujifunza zaidi kuhusu Jinsi ya Kuongeza Kurasa Nyingine Katika Django View

Soma Zaidi...
Python somo la 35: Jinsi ya kutumia MYSQL kwenye python

Katika somo hili utajifunz akutumia database kwenye python

Soma Zaidi...
Python somo la 52: Kutengeneza table na kufanya Migrations Katika Django

Katika somo hili tutajifunza jinsi Django hutumia migrations kuunda na kubadilisha tables kwenye database kulingana na models tunazoandika. Tutapitia maana ya migration, hatua za kuitumia, umuhimu wake, misingi ya makemigrations na migrate, pamoja na mfano halisi kutoka kwenye project yetu ya pybongo (app: menu).

Soma Zaidi...
Python somo 57: Matumizi ya Python shell

Katika somo hili, tutajifunza: Maana ya Python shell na umuhimu wake. Tofauti kati ya shell na terminal ya kawaida. Matumizi ya shell, hususan kwenye Django. Amri muhimu zaidi za Python shell, zilizotokana na models na views zako za pybongo.

Soma Zaidi...
Python somo la 45: Kutumia Loops na Conditions katika Django Templates

Katika somo hili utakwend akujifunza kuchakata data kwa Kutumia Loops na Conditions katika Django Templates

Soma Zaidi...
Python somo la 21: Module katika python

Katika somo hili utakwend akujifunz amaana ya module, kazi zake, aina zake na jinsi ya kuandika modile

Soma Zaidi...
PYTHON - somo la 9: indexing katika strinfg

Katika somo hili tutakwenda kujifunza kuhusu string indexing. Kama tulivyojifunza kuhusu namba katika somo lililopita, basi hapa tutakwenda kucheza na string.

Soma Zaidi...