EN ES
Home > Web development > How to Create a Blog System from Scratch with Django

How to Create a Blog System from Scratch with Django

Diego Cortés
Diego Cortés
September 20, 2024
How to Create a Blog System from Scratch with Django

Django is a powerful web framework for Python that allows for the rapid and efficient development of web applications. In this article, I will guide you through the process of creating a blog system from scratch using Django, covering everything from installation to final deployment. By the end, you will have a functional blog that you can modify to meet your needs.

Prerequisites

Before you begin, make sure you have:

  • Python installed (preferably version 3.6 or above)
  • Pip for managing Python packages
  • Basic knowledge of Python and web development

Installing Django

Step 1: Create a Virtual Environment

The first thing we will do is create a virtual environment for our project. This will help us manage dependencies in isolation.

mkdir my_blog
cd my_blog
python -m venv venv
source venv/bin/activate  # On Windows use 'venv\Scripts\activate'

Step 2: Install Django

With the virtual environment activated, install Django using pip:

pip install django

Step 3: Create a New Project

Create a new Django project with the following command:

django-admin startproject blog_project

This will create a folder called blog_project with the basic structure of a Django project.

Creating the Blog Application

Step 1: Create a New Application

Navigate to your project folder and create a new application called blog:

cd blog_project
django-admin startapp blog

Step 2: Register the Application

Open the settings.py file located in blog_project/blog_project/ and add 'blog' to the INSTALLED_APPS list:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

Django Models

Models are an essential part of any Django application. In our case, we will create a simple model for blog entries.

Step 1: Define the Model

Open the models.py file in the blog folder and define the following model:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

Step 2: Migrate Changes

After defining the model, we need to create and apply the migration to update the database.

python manage.py makemigrations
python manage.py migrate

Django Admin

Step 1: Register the Model in Admin

To manage blog entries from the admin panel, register the Post model in the admin.py file of the blog application:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

Step 2: Create a Superuser

To access the admin panel, you need to create a superuser:

python manage.py createsuperuser

Follow the on-screen instructions to do this.

Step 3: Start the Server

Now it’s time to run our server:

python manage.py runserver

Visit http://127.0.0.1:8000/admin in your browser and log in with the superuser credentials you created. You should now see the option to manage blog posts.

Creating Views and Templates

Step 1: Create a View to List Posts

Create a view in views.py that displays all the posts:

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all()
    return render(request, 'blog/post_list.html', {'posts': posts})

Step 2: Configure URLs

Create a urls.py file in the blog folder and set up the URLs:

from django.urls import path
from .views import post_list

urlpatterns = [
    path('', post_list, name='post_list'),
]

Then add this URL to the project's URLs by opening urls.py in the blog_project folder:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]

Step 3: Create the Template

Create a folder called templates in the blog folder and inside it, another folder called blog. Then, create a file named post_list.html in blog/templates/blog/:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Blog</title>
</head>
<body>
    <h1>Blog</h1>
    <ul>
        {% for post in posts %}
            <li>
                <h2>{{ post.title }}</h2>
                <p>{{ post.content }}</p>
                <p><em>Published on {{ post.created_at }}</em></p>
            </li>
        {% endfor %}
    </ul>
</body>
</html>

Running the Project

After completing all the previous steps, you can now run the project:

python manage.py runserver

Visit http://127.0.0.1:8000/ in your browser, and you should see your blog up and running.

Conclusion

Creating a blog system with Django is a rewarding and enriching process that helps you understand the basics of web development. In this article, we covered how to set up a Django environment, create a model for blog entries, use the admin panel, and display posts in a template.

With this foundation, you can expand your blog by adding features such as comments, tags, categories, and user authentication. The possibilities are endless!

Additional Resources

Keep exploring, and happy coding!

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categories

Page loaded in 38.23 ms