Python Django Error during rendering "template"

This is what im building I am currently developing a receipt system and when i run the application, i get this error, i have checked the settings.py and my app has been added to the list of installed apps, my templates are also in place and the problem is still existent,please assist if there is somewhere else i need to check , Below is the error i get when i try run the application This is the error
Environment:

    Request Method: GET
    Request URL: http://127.0.0.1:8000/
    
    Django Version: 5.2.1
    Python Version: 3.12.3
    Installed Applications:
    ['django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'receiptsiclife']
    Installed Middleware:
    ['django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware']
    
    Template loader postmortem
    Django tried loading these templates, in this order:
    
    Using engine django:
        * django.template.loaders.filesystem.Loader: /home/aessumen/receiptsystemsiclife/receiptsystemsiclife/templates/base.html (Source does not exist)
        * django.template.loaders.app_directories.Loader: /home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/contrib/admin/templates/base.html (Source does not exist)
        * django.template.loaders.app_directories.Loader: /home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/contrib/auth/templates/base.html (Source does not exist)
        * django.template.loaders.app_directories.Loader: /home/aessumen/receiptsystemsiclife/receiptsystemsiclife/receiptsiclife/templates/base.html (Source does not exist)
    
    
    Template error:
    In template /home/aessumen/receiptsystemsiclife/receiptsystemsiclife/receiptsiclife/templates/receiptsiclife/home.html, error at line 1
       base.html
       1 :  {% extends 'base.html' %} 
       2 : 
       3 : {% block title %}Dashboard - ReceiptSicLife{% endblock %}
       4 : 
       5 : {% block content %}
       6 : <div class="row">
       7 :     <div class="col-md-12">
       8 :         <h1>Dashboard</h1>
       9 :         <div class="row mt-4">
       10 :             <div class="col-md-4">
       11 :                 <div class="card bg-primary text-white">
    
    
    Traceback (most recent call last):
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render
        return self.template.render(context)
              
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render
        return self._render(context)
               
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render
        return self.nodelist.render(context)
               
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render
        return SafeString("".join([node.render_annotated(context) for node in self]))
                                  
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated
        return self.render(context)
             
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 134, in render
        compiled_parent = self.get_parent(context)
                          
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 131, in get_parent
        return self.find_template(parent, context)
               
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 109, in find_template
        template, origin = context.template.engine.find_template(
                           
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/engine.py", line 163, in find_template
        raise TemplateDoesNotExist(name, tried=tried)
       
    
    The above exception (base.html) was the direct cause of the following exception:
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
        response = get_response(request)
                   
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
                   
      File "/home/aessumen/receiptsystemsiclife/receiptsystemsiclife/receiptsiclife/views.py", line 21, in home
        return render(request, 'receiptsiclife/home.html', context)
               
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/shortcuts.py", line 25, in render
        content = loader.render_to_string(template_name, context, request, using=using)
                    File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/loader.py", line 62, in render_to_string
        return template.render(context, request)
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/backends/django.py", line 109, in render
        reraise(exc, self.backend)
       
      File "/home/aessumen/receiptsystemsiclife/venv/lib/python3.12/site-packages/django/template/backends/django.py", line 130, in reraise
        raise new from exc
        
    
    Exception Type: TemplateDoesNotExist at /
    Exception Value: base.html
     
   " MODELS.PY
    from django.db import models
    
    from django.db import models
    from django.core.mail import EmailMessage
    from django.conf import settings
    from reportlab.lib.pagesizes import letter
    from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
    from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
    from reportlab.lib.units import inch
    from reportlab.lib import colors
    from io import BytesIO
    import os
    from datetime import datetime
    
    class Student(models.Model):
        PROGRAM_CHOICES = [
            ('computer_science', 'Computer Science'),
            ('business_admin', 'Business Administration'),
            ('engineering', 'Engineering'),
            ('medicine', 'Medicine'),
            ('law', 'Law'),
            ('education', 'Education'),
        ]
        
        student_name = models.CharField(max_length=200)
        dob = models.DateField(verbose_name="Date of Birth")
        program = models.CharField(max_length=50, choices=PROGRAM_CHOICES)
        email = models.EmailField()
        parents_name = models.CharField(max_length=200)
        parents_contact = models.CharField(max_length=20)
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
        
        def __str__(self):
            return f"{self.student_name} - {self.program}"
        
        class Meta:
            verbose_name = "Student"
            verbose_name_plural = "Students"
    
    class Payment(models.Model):
        PAYMENT_STATUS_CHOICES = [
            ('pending', 'Pending'),
            ('completed', 'Completed'),
            ('failed', 'Failed'),
            ('refunded', 'Refunded'),
        ]
        
        PAYMENT_METHOD_CHOICES = [
            ('cash', 'Cash'),
            ('card', 'Credit/Debit Card'),
            ('bank_transfer', 'Bank Transfer'),
            ('mobile_money', 'Mobile Money'),
        ]
        
        student = models.ForeignKey(Student, on_delete=models.CASCADE, related_name='payments')
        amount = models.DecimalField(max_digits=10, decimal_places=2)
        payment_date = models.DateTimeField(auto_now_add=True)
        payment_method = models.CharField(max_length=20, choices=PAYMENT_METHOD_CHOICES)
        status = models.CharField(max_length=20, choices=PAYMENT_STATUS_CHOICES, default='pending')
        description = models.TextField(blank=True, null=True)
        receipt_number = models.CharField(max_length=50, unique=True, blank=True)
        
        def save(self, *args, **kwargs):
            if not self.receipt_number:
                # Generate unique receipt number
                self.receipt_number = f"REC-{datetime.now().strftime('%Y%m%d')}-{self.id or '000'}"
            
            # If payment status changes to completed, generate and send receipt
            if self.status == 'completed' and self.pk:
                old_status = Payment.objects.get(pk=self.pk).status if self.pk else None
                if old_status != 'completed':
                    super().save(*args, **kwargs)
                    self.generate_and_send_receipt()
                    return
            
            super().save(*args, **kwargs)
        
        def generate_pdf_receipt(self):
            """Generate PDF receipt"""
            buffer = BytesIO()
            doc = SimpleDocTemplate(buffer, pagesize=letter, rightMargin=72, leftMargin=72,
                                  topMargin=72, bottomMargin=18)
            
            # Container for PDF elements
            elements = []
            styles = getSampleStyleSheet()
            
            # Custom styles
            title_style = ParagraphStyle(
                'CustomTitle',
                parent=styles['Heading1'],
                fontSize=24,
                spaceAfter=30,
                alignment=1,  # Center alignment
                textColor=colors.HexColor('#2E86AB')
            )
            
            header_style = ParagraphStyle(
                'CustomHeader',
                parent=styles['Heading2'],
                fontSize=16,
                spaceAfter=12,
                textColor=colors.HexColor('#A23B72')"
    
    
  "  URLS.PY
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.home, name='home'),
        path('students/', views.student_list, name='student_list'),
        path('students/add/', views.student_create, name='student_create'),
        path('students/<int:pk>/', views.student_detail, name='student_detail'),
        path('payments/', views.payment_list, name='payment_list'),
        path('payments/add/', views.payment_create, name='payment_create'),
        path('payments/<int:pk>/', views.payment_detail, name='payment_detail'),
        path('payments/<int:pk>/receipt/', views.download_receipt, name='download_receipt'),
    ] "
    
   " VIEW.PY
    from django.shortcuts import render
    
    from django.shortcuts import render, redirect, get_object_or_404
    from django.contrib import messages
    from django.http import HttpResponse, JsonResponse
    from django.views.generic import ListView
    from .models import Student, Payment
    from .forms import StudentForm, PaymentForm
    
    def home(request):
        """Home page view"""
        recent_payments = Payment.objects.filter(status='completed')[:5]
        total_students = Student.objects.count()
        total_payments = Payment.objects.filter(status='completed').count()
        
        context = {
            'recent_payments': recent_payments,
            'total_students': total_students,
            'total_payments': total_payments,
        }
        return render(request, 'receiptsiclife/home.html', context)
    
    def student_create(request):
        """Create new student"""
        if request.method == 'POST':
            form = StudentForm(request.POST)
            if form.is_valid():
                student = form.save()
                messages.success(request, f'Student {student.student_name} created successfully!')
                return redirect('student_list')
        else:
            form = StudentForm()
        
        return render(request, 'receiptsiclife/student_form.html', {'form': form, 'title': 'Add New Student'})
    
    def student_list(request):
        """List all students"""
        students = Student.objects.all().order_by('-created_at')
        return render(request, 'receiptsiclife/student_list.html', {'students': students})
    
    def student_detail(request, pk):
        """Student detail view"""
        student = get_object_or_404(Student, pk=pk)
        payments = student.payments.all().order_by('-payment_date')
        return render(request, 'receiptsiclife/student_detail.html', {
            'student': student,
            'payments': payments
        })
    
    def payment_create(request):
        """Create new payment"""
        if request.method == 'POST':
            form = PaymentForm(request.POST)
            if form.is_valid():
                payment = form.save(commit=False)
                payment.status = 'completed'  # Auto-complete payment
                payment.save()
                messages.success(request, f'Payment of ${payment.amount} recorded successfully!')
                return redirect('payment_list')
        else:
            form = PaymentForm()
        
        return render(request, 'receiptsiclife/payment_form.html', {'form': form, 'title': 'Record New Payment'}) "
    
   " SETTINGS.PY
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = 'django-insecure-j^%lil+8pmkkqmzd549p$@a96ro-#u(w&qi+vf-vt@ifm^v+2n'
    
    # SECURITY WARNING: don't run with debug turned on in production!
        
    #2ND CHANGES MADE
    DEBUG = config('DEBUG', default=True, cast=bool)    
    
    
    #Changes made
    #DEBUG = True
    
    ALLOWED_HOSTS = ['localhost', '127.0.0.1']
    
    
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'receiptsiclife',
    ]
    
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    ROOT_URLCONF = 'receiptsystemsiclife.urls' "
    
   " URLS.PY
    from django.contrib import admin
    from django.urls import path, include
    from django.conf import settings
    from django.conf.urls.static import static
    
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('receiptsiclife.urls')),
    
    ] "
      "       " BASE.HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}ReceiptSicLife{% endblock %}</title>
    
    <!-- Bootstrap CSS -->
    <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
    
    <!-- Custom CSS -->
    {% load static %}
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
    
    {% block extra_css %}{% endblock %}
</head>
<body>
    <!-- Navigation Bar -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <div class="container">
            <a class="navbar-brand" href="{% url 'home' %}">ReceiptSicLife</a>
            
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
                <span class="navbar-toggler-icon"></span>
            </button>
            
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav me-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="{% url 'home' %}">Dashboard</a>
                    </li>
                    <!-- Add more navigation items as needed -->
                </ul>
                
                <ul class="navbar-nav">
                    {% if user.is_authenticated %}
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown">
                                {{ user.username }}
                            </a>
                            <ul class="dropdown-menu"> "
 "URLS.PY This is my URLS.py

if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)"
Вернуться на верх