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.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://198.211.115.131/projects/python/python-basic-blog-system-project.php