w3resource

Building a Basic Blog System in Python: Two Approaches


Basic Blog System:

Build a minimalistic blog system with features like creating, editing, and deleting blog posts.

Input values:
User interacts with the blog system by creating, editing, and deleting blog posts.

Output value:
Visual representation of blog posts with feedback on user actions (create, edit, delete).

Example:

Input values:
1. Create a new blog post
- Input post title: "Python Projects"
- Input post content: "This is a beginner's guide to Python projects."
Output value:
Blog system displays the new blog post:
Title: Python Projects
Content: This is a beginner's guide to Python projects.
Input values:
2. Edit an existing blog post
- Input post title to edit: "Introduction to C Programming"
- Input updated post content: "Learn the basics of coding and start your programming journey."
Output value:
Blog system displays the updated blog post:
Title: Introduction to C Programming
Content: Learn the basics of coding and start your programming journey.
Input values:
3. Delete a blog post
- Input post title to delete: "Python Projects"
Output value:
Blog system removes deleted blog posts and displays the remaining posts.
Input values:
4. Exit the blog system
Output value:
Blog system exits.

Here are two different solutions for building a basic blog system in Python. Each solution allows users to create, edit, delete, and display blog posts.

Solution 1: Basic Approach Using a Dictionary

Following solution uses a dictionary to store blog posts and provides basic functions to manage them.

Code:

 # Solution 1: Basic Approach Using a Dictionary

def display_posts(posts):
    """Display all blog posts."""
    if not posts:
        print("No blog posts available.")
        return

    print("\nCurrent Blog Posts:")
    for title, content in posts.items():
        print(f"Title: {title}")
        print(f"Content: {content}\n")


def create_post(posts):
    """Create a new blog post."""
    title = input("Input post title: ")
    content = input("Input post content: ")
    if title in posts:
        print("A post with this title already exists. Choose a different title.")
    else:
        posts[title] = content
        print(f"Blog post '{title}' created successfully.")


def edit_post(posts):
    """Edit an existing blog post."""
    title = input("Input post title to edit: ")
    if title in posts:
        content = input("Input updated post content: ")
        posts[title] = content
        print(f"Blog post '{title}' updated successfully.")
    else:
        print(f"No blog post found with the title '{title}'.")


def delete_post(posts):
    """Delete an existing blog post."""
    title = input("Input post title to delete: ")
    if title in posts:
        del posts[title]
        print(f"Blog post '{title}' deleted successfully.")
    else:
        print(f"No blog post found with the title '{title}'.")


def main():
    """Main function to run the blog system."""
    posts = {}  # Dictionary to store blog posts
    print("Welcome to the Basic Blog System!")

    while True:
        print("\n1. Create a new blog post")
        print("2. Edit an existing blog post")
        print("3. Delete a blog post")
        print("4. Display all blog posts")
        print("5. Exit")

        choice = input("Select an option: ")

        if choice == '1':
            create_post(posts)
        elif choice == '2':
            edit_post(posts)
        elif choice == '3':
            delete_post(posts)
        elif choice == '4':
            display_posts(posts)
        elif choice == '5':
            print("Exiting the blog system. Goodbye!")
            break
        else:
            print("Invalid option. Please choose a valid number.")


# Run the blog system
main() 

Output:

Welcome to the Basic Blog System!

1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 1
Input post title: Python 100 Projects
Input post content: Explore the world of Python programming with these engaging beginner projects! From classic games like Hangman and Tic-Tac-Toe to practical tools like a Password Manager and Currency Converter, these projects cover a diverse range of topics.
Blog post 'Python 100 Projects' created successfully.

1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 4

Current Blog Posts:
Title: Python 100 Projects
Content: Explore the world of Python programming with these engaging beginner projects! From classic games like Hangman and Tic-Tac-Toe to practical tools like a Password Manager and Currency Converter, these projects cover a diverse range of topics.


1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 5
Exiting the blog system. Goodbye! 

Explanation:

  • display_posts(posts) Function:
    • Displays all existing blog posts stored in the dictionary.
    • Handles the case where no blog posts are available.
  • create_post(posts) Function:
    • Prompts the user to input a title and content for a new post.
    • Adds the new post to the dictionary if the title is unique.
  • edit_post(posts) Function:
    • Prompts the user for the title of the post to edit.
    • Allows the user to update the content of the existing post.
  • delete_post(posts) Function:
    • Prompts the user for the title of the post to delete.
    • Removes the post from the dictionary if it exists.
  • main() Function:
    • Manages the overall flow of the program, providing a menu for creating, editing, deleting, displaying, and exiting the blog system.

Solution 2: Class-Based approach for Better Organization

This solution uses a class to encapsulate all blog-related functionality, making it more organized and scalable.

Code:

# Solution 2: Class-Based Approach for Better Organization

class BlogSystem:
    """Class to handle the basic blog system functionality."""

    def __init__(self):
        """Initialize the blog system with an empty dictionary for posts."""
        self.posts = {}

    def display_posts(self):
        """Display all blog posts."""
        if not self.posts:
            print("No blog posts available.")
            return

        print("\nCurrent Blog Posts:")
        for title, content in self.posts.items():
            print(f"Title: {title}")
            print(f"Content: {content}\n")

    def create_post(self):
        """Create a new blog post."""
        title = input("Input post title: ")
        content = input("Input post content: ")
        if title in self.posts:
            print("A post with this title already exists. Choose a different title.")
        else:
            self.posts[title] = content
            print(f"Blog post '{title}' created successfully.")

    def edit_post(self):
        """Edit an existing blog post."""
        title = input("Input post title to edit: ")
        if title in self.posts:
            content = input("Input updated post content: ")
            self.posts[title] = content
            print(f"Blog post '{title}' updated successfully.")
        else:
            print(f"No blog post found with the title '{title}'.")

    def delete_post(self):
        """Delete an existing blog post."""
        title = input("Input post title to delete: ")
        if title in self.posts:
            del self.posts[title]
            print(f"Blog post '{title}' deleted successfully.")
        else:
            print(f"No blog post found with the title '{title}'.")

    def run(self):
        """Main method to run the blog system."""
        print("Welcome to the Basic Blog System!")

        while True:
            print("\n1. Create a new blog post")
            print("2. Edit an existing blog post")
            print("3. Delete a blog post")
            print("4. Display all blog posts")
            print("5. Exit")

            choice = input("Select an option: ")

            if choice == '1':
                self.create_post()
            elif choice == '2':
                self.edit_post()
            elif choice == '3':
                self.delete_post()
            elif choice == '4':
                self.display_posts()
            elif choice == '5':
                print("Exiting the blog system. Goodbye!")
                break
            else:
                print("Invalid option. Please choose a valid number.")


def main():
    """Main function to create an instance of the BlogSystem and run it."""
    blog_system = BlogSystem()
    blog_system.run()


# Run the blog system
main() 

Output:

Welcome to the Basic Blog System!

1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 1
Input post title: Python Projects
Input post content: Whether you're interested in building web applications, games, or utilities, these hands-on projects provide a fun and educational way to enhance your Python skills. Choose a project that sparks your interest and dive into the exciting journey of coding!
Blog post 'Python Projects' created successfully.

1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 4

Current Blog Posts:
Title: Python Projects
Content: Whether you're interested in building web applications, games, or utilities, these hands-on projects provide a fun and educational way to enhance your Python skills. Choose a project that sparks your interest and dive into the exciting journey of coding!


1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 2
Input post title to edit: Python Projects
Input updated post content: Explore the world of Python programming with these engaging beginner projects! From classic games like Hangman and Tic-Tac-Toe to practical tools like a Password Manager and Currency Converter, these projects cover a diverse range of topics.
Blog post 'Python Projects' updated successfully.

1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 4

Current Blog Posts:
Title: Python Projects
Content: Explore the world of Python programming with these engaging beginner projects! From classic games like Hangman and Tic-Tac-Toe to practical tools like a Password Manager and Currency Converter, these projects cover a diverse range of topics.


1. Create a new blog post
2. Edit an existing blog post
3. Delete a blog post
4. Display all blog posts
5. Exit
Select an option: 5
Exiting the blog system. Goodbye!

Explanation:

  • 1. BlogSystem Class:
    • __init__() Constructor: Initializes the class with an empty dictionary for storing blog posts.
    • display_posts() Method: Displays all existing blog posts stored in the dictionary.
    • create_post() Method: Allows the user to create a new blog post with a unique title.
    • edit_post() Method: Enables the user to edit an existing post by providing a new content.
    • delete_post() Method: Lets the user delete a post by title.
    • run() Method: Controls the flow of the blog system, providing a menu for interacting with the user.
  • main() Function:
    • Creates an instance of BlogSystem and calls the run() method to start the blog system.

Differences Between the Two Solutions:

  • Solution 1: Basic Approach Using a Dictionary:
    • Uses basic functions to handle blog operations.
    • Simpler and more straightforward, suitable for smaller applications.
    • All logic is in the main function and helper functions.
  • Solution 2: Class-Based Approach for Better Organization:
    • Encapsulates all blog functionalities in a class, making the code more modular and scalable.
    • More organized and maintainable, suitable for larger or more complex applications.
    • Easier to extend with additional features (e.g., user authentication, post categories) in the future.


Become a Patron!

Follow us on Facebook and Twitter for latest update.