Prerequisites
Make sure you have the following installed:
- Python (3.x)
- Flask
- SQLite (or any database of your choice)
You can install Flask using pip:
pip install Flask
Directory Structure
event_management_system/
│
├── app.py
├── templates/
│ ├── base.html
│ ├── event_list.html
│ └── event_form.html
└── static/
└── style.css
Code Implementation
1. app.py
This is the main application file.
from flask import Flask, render_template, redirect, url_for, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///events.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Event(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
description = db.Column(db.String(200), nullable=False)
date = db.Column(db.String(20), nullable=False)
def __repr__(self):
return f'<Event {self.title}>'
@app.route('/')
def index():
events = Event.query.all()
return render_template('event_list.html', events=events)
@app.route('/event/new', methods=['GET', 'POST'])
def new_event():
if request.method == 'POST':
title = request.form['title']
description = request.form['description']
date = request.form['date']
new_event = Event(title=title, description=description, date=date)
db.session.add(new_event)
db.session.commit()
return redirect(url_for('index'))
return render_template('event_form.html')
@app.route('/event/edit/<int:event_id>', methods=['GET', 'POST'])
def edit_event(event_id):
event = Event.query.get_or_404(event_id)
if request.method == 'POST':
event.title = request.form['title']
event.description = request.form['description']
event.date = request.form['date']
db.session.commit()
return redirect(url_for('index'))
return render_template('event_form.html', event=event)
@app.route('/event/delete/<int:event_id>', methods=['POST'])
def delete_event(event_id):
event = Event.query.get_or_404(event_id)
db.session.delete(event)
db.session.commit()
return redirect(url_for('index'))
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
2. HTML Templates
Base Template (templates/base.html
)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Management System</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<div class="container">
<h1>Event Management System</h1>
<nav>
<a href="{{ url_for('index') }}">Home</a>
<a href="{{ url_for('new_event') }}">Create Event</a>
</nav>
{% block content %}{% endblock %}
</div>
</body>
</html>
Event List Template (templates/event_list.html
)
{% extends 'base.html' %}
{% block content %}
<h2>Event List</h2>
<ul>
{% for event in events %}
<li>
<strong>{{ event.title }}</strong> - {{ event.date }}
<form action="{{ url_for('delete_event', event_id=event.id) }}" method="POST" style="display:inline;">
<button type="submit">Delete</button>
</form>
<a href="{{ url_for('edit_event', event_id=event.id) }}">Edit</a>
</li>
{% endfor %}
</ul>
{% endblock %}
Event Form Template (templates/event_form.html
)
htmlCopy code{% extends 'base.html' %}
{% block content %}
<h2>{% if event %}Edit Event{% else %}New Event{% endif %}</h2>
<form method="POST">
<label for="title">Title:</label>
<input type="text" name="title" required value="{{ event.title if event else '' }}">
<label for="description">Description:</label>
<input type="text" name="description" required value="{{ event.description if event else '' }}">
<label for="date">Date:</label>
<input type="text" name="date" required value="{{ event.date if event else '' }}">
<button type="submit">{% if event %}Update{% else %}Create{% endif %}</button>
</form>
<a href="{{ url_for('index') }}">Back to Event List</a>
{% endblock %}
3. Basic CSS (optional)
You can add some basic styling in static/style.css
.
body {
font-family: Arial, sans-serif;
margin: 20px;
}
.container {
max-width: 800px;
margin: auto;
}
nav a {
margin-right: 15px;
}
Running the Application
- Navigate to the project directory.
- Run the application:
python app.py
- Open your web browser and go to
http://127.0.0.1:5000
.
Leave a Reply