5 Event App
5.1 Event Model
Define the Event Model
crm/models.py
# Add these lines
class Event(models.Model):
name = models.CharField(max_length=200)
time = models.DateTimeField()
location = models.CharField(max_length=200)
description = models.TextField()
link = models.URLField(blank=True, null=True)
def __str__(self):
return self.nameMake Migrations and Migrate
python manage.py makemigrations
python manage.py migrateRegister the Event Model in the Admin Interface
crm/admin.py
# Update the file
from django.contrib import admin
from .models import Record, Event
admin.site.register(Record)
admin.site.register(Event)crm/views.py
# Add these lines
from django.shortcuts import render
from .models import Event
def event_list(request):
events = Event.objects.all()
return render(request, 'crm/event_list.html', {"events": events})Event List Template
{% extends 'base.html' %}
{% block content %}
<h1>Event List</h1>
<table class="table table-striped table-hover table-bordered">
<thead class="table-dark">
<tr>
<th scope="col">Name</th>
<th scope="col">Date and Time</th>
<th scope="col">Location</th>
<th scope="col">More Info</th>
</tr>
</thead>
<tbody>
{% if events %}
{% for event in events %}
<tr>
<td>{{ event.name }}</td>
<td>{{ event.time }}</td>
<td>{{ event.location }}</td>
<td>
{% if event.link %}
<a href="{{ event.link }}" class="btn btn-primary">View</a>
{% else %}
N/A
{% endif %}
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="4">No events found.</td>
</tr>
{% endif %}
</tbody>
</table>
{% endblock %}Update URL Dispatcher Configuration
crm/urls.py
# Update the file
from django.urls import path
from . import views
urlpatterns = [
# ...
path('events/', views.event_list, name='event_list'),
]Update Navbar
<!-- Navigation bar -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<!-- Brand name and link to home -->
<a class="navbar-brand" href="{% url 'home' %}">Django CRM</a>
<!-- Button for toggling the navbar on small screens -->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar content -->
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link" href="{% url 'event_list' %}">Events</a></li> <!-- always show Events -->
{% if not user.is_authenticated %}
<li class="nav-item"><a class="nav-link" href="{% url 'login' %}">Login</a></li>
{% else %}
<li class="nav-item"><a class="nav-link" href="{% url 'record_list' %}">Records</a></li>
<li class="nav-item">
<form id="logout-form" method="post" action="{% url 'logout' %}">
{% csrf_token %}
<button type="submit" class="btn btn-link nav-link">Logout</button>
</form>
</li>
{% endif %}
</ul>
<ul class="navbar-nav ml-auto mb-2 mb-lg-0">
<li class="nav-item">
<span class="navbar-text">Hello {{ user.get_username }}</span>
</li>
</ul>
</div>
</div>
</nav>Result
