Back to Home
Django Backend Project Hero

Django Miniblog Project

Role: Developer

Skills: Python, Django, Databases

The Goal

The goal of this project was to build a Content Management System to handle the backend complexities of a dynamically updating MiniBlog website using the Django (Python) framework. I focused heavily on building a coherent backend architecture and handling user-generated data.

The Architecture

Models

I designed the database using three core models:

  • Bloggers: Extended the base user model to include custom bios, and join dates.
  • Posts: Capturing blog text content, and Foreign Key connections to the Blogger who wrote them.
  • Comments: Enables user engagement by linking content between posts and users.

Having done this as a simple demonstration for a school project, I was not required to build forms to create new blog posts, and handled post creation from the admin interface. To create the ability to make blog posts from the website, I would simply give the Blogger model permission to create posts, and create a form to handle post creation.

Administration site
An admin site list of all blogger objects.
Comment form
All logged in users are allowed to write comments on blog posts.

Templates

To maintain consistent UI features, and save time overall, every template inherits from a base-generic.html document. The index, list pages, and detail pages all extend from the generic document.

Miniblog homepage
Miniblog homepage featuring dynamic content.
List of blog posts
List of all blog posts (paginated).
Blogger detail page
Blog post detail page.

Views

To easily link information between my models and templates, I used class-based views. The list views pull information about bloggers or posts, the detail views get more in depth information, and the form collects information, validates it and connects it to the related post.

Code snippet of views
Code snippet of class based views.

Conclusion

Building the MiniBlog project helped to bridge the gap between my design knowledge and my understanding of more in depth data management. With an understanding of both front and backend development, I can more thoroughly consider how they connect and interact with each other.