[Python] Python Django Error during rendering "template"

Discussão em 'Python' iniciado por Stack, Junho 3, 2025.

  1. Stack

    Stack Membro Participativo

    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)"

    Continue reading...

Compartilhe esta Página