

{"id":114631,"date":"2023-06-21T09:00:22","date_gmt":"2023-06-21T03:30:22","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=114631"},"modified":"2026-06-01T12:59:52","modified_gmt":"2026-06-01T07:29:52","slug":"python-django-wishlist-app","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/","title":{"rendered":"Python Django WishList App \u2013 Fuel Your Aspirations"},"content":{"rendered":"<p>Wishlist is an essential part of everyone&#8217;s life. It&#8217;s always great to have a list of things that you want to do, achieve, or own. In this project, we will create a simple Wishlist Web Application using Django, where users can add their wishes, track their progress, and update them as they are fulfilled.<\/p>\n<h3>About Python Django WishList App<\/h3>\n<p>The objective of this project is to create a functional Django Web Application for managing Wishlist. By the end of this django wishlist app project, you will have a complete understanding of how to create a Django application from scratch, and how to design models, views, and templates.<\/p>\n<h3>Prerequisites for WishList App Using Python Django<\/h3>\n<p>Before starting this project, you should have a basic understanding of Django, HTML, CSS, and JavaScript. You will need Python 3 installed on your system, along with Django and Pillow packages. You can install them by running the following command in your terminal:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pip install Django\r\npip install Pillow\r\n<\/pre>\n<h3>Download Python Django WishList App Project<\/h3>\n<p>Please download the source code of Python Django WishList App Project:<a href=\"https:\/\/drive.google.com\/file\/d\/1M_cG0043iVsiL__qNLF7JRPwQG4uv0WY\/view?usp=drive_link\"><strong> Python Django WishList App Project Code<\/strong><\/a><\/p>\n<h3>Steps to WishList App Using Python Django<\/h3>\n<p>Following are the steps for developing the Python Django WishList App Project:<\/p>\n<p><strong>Step 1:<\/strong> Create a new Django Project:<br \/>\n<strong>Step 2:<\/strong> Create a new Django App:<br \/>\n<strong>Step 3:<\/strong> Design Database Models:<br \/>\n<strong>Step 4:<\/strong> Create Views:<br \/>\n<strong>Step 5:<\/strong> Create Forms:<br \/>\n<strong>Step 6:<\/strong> Create Templates:<br \/>\n<strong>Step 7:<\/strong> Create URLs:<br \/>\n<strong>Step 8:<\/strong> Test Your Application:<\/p>\n<h4>Step 1: Create a new Django Project:<\/h4>\n<p>First, create a new Django project using the following command in your terminal:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">django-admin startproject wishlist\r\n<\/pre>\n<p>This will create a new Django project called &#8220;wishlist&#8221; in your current directory.<\/p>\n<h4>Step 2: Create a new Django App:<\/h4>\n<p>Next, create a new Django app called &#8220;wishlist&#8221; using the following command:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">python manage.py startapp wish\r\n<\/pre>\n<p>This will create a new Django app called &#8220;wish&#8221; in your project directory.<\/p>\n<h4>Step 3: Design Database Models:<\/h4>\n<p>In this step, we will create our database models. We need a model for a user&#8217;s wishlist and another for each wish. Add the following code to your &#8220;wish\/models.py&#8221; file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Importing the required libraries\r\nfrom django.db import models\r\nimport datetime\r\n\r\n#---------------------------------Models---------------------------------#\r\n\r\n# Creating the Wish model\r\nclass Wish(models.Model):\r\n    \r\n    # Defining the fields of the model\r\n    wishtitle = models.CharField(max_length=250,unique=True)\r\n    wish = models.CharField(max_length=1000)\r\n    link = models.CharField(max_length=1000)\r\n    date = models.DateField(default=datetime.date.today)\r\n    is_achieved = models.BooleanField(default=False, blank=True)\r\n    image = models.ImageField(upload_to='images\/')\r\n    \r\n    # Defining the string representation of the model\r\n    def __str__(self):\r\n        return  self.wishtitle<\/pre>\n<p>Here, we have created a model named Wish, that has wishtitle, wish, link, date, is_achieved, and image field.<\/p>\n<h4>Step 4: Create Views:<\/h4>\n<p>In this step, we will create our views. We need views for displaying the list of wishes, adding and updating and deleting the wishes.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Importing Required Libraries\r\nfrom django.shortcuts import render, redirect\r\nfrom .models import Wish\r\nfrom .forms import WishForm\r\n\r\n#---------------------------------Views---------------------------------#\r\n\r\n# Creating the WishList view to display the list of wishes\r\ndef WishList(request):\r\n    \r\n    # Getting the list of wishes from the database\r\n    wish = Wish.objects.all()\r\n    \r\n    # Defining the parameters to be passed to the html page\r\n    params = {'wishes': wish}  \r\n    \r\n    # Returning the wishes to the html page\r\n    return render(request, 'Wishes.html', params)  \r\n\r\n\r\n# Creating the CreateWish view to create a new wish\r\ndef CreateWish(request):\r\n    \r\n    # Creating an instance of the WishForm\r\n    form = WishForm(request.POST, request.FILES or None)\r\n    \r\n    # Checking if the form is valid\r\n    if form.is_valid():\r\n        \r\n        # Saving the form and redirecting to the WishList view\r\n        form.save()\r\n        return redirect('WishList')\r\n    \r\n    # Returning the form to the html page\r\n    return render(request, 'WishForm.html', {'form': form})\r\n\r\n# Creating the UpdateWish view to update an existing wish\r\ndef UpdateWish(request, id):\r\n    # Getting the wish from the database\r\n    wish = Wish.objects.get(id=id)\r\n    \r\n    # Creating an instance of the WishForm\r\n    form = WishForm(request.POST or None, instance=wish)\r\n    \r\n    # Checking if the form is valid\r\n    if form.is_valid():\r\n        \r\n        # Saving the form and redirecting to the WishList view\r\n        form.save()\r\n        return redirect('WishList')\r\n    \r\n    # Returning the form to the html page\r\n    return render(request, 'WishForm.html', {'form': form, 'wish': wish})\r\n\r\n# Creating the DeleteWish view to delete an existing wish\r\ndef DeleteWish(request, id):\r\n    # Getting the wish from the database\r\n    wish = Wish.objects.get(id=id)\r\n    \r\n    # Checking if the request is a POST request\r\n    if request.method == 'POST':\r\n        \r\n        # Deleting the wish and redirecting to the WishList view\r\n        wish.delete()\r\n        return redirect('WishList')\r\n    \r\n    # Returning the wish to the html page\r\n    return render(request, 'DeleteConfirm.html', {'wish': wish})<\/pre>\n<p>Here, we have created following views<\/p>\n<ul>\n<li><strong>WishList:<\/strong> It will display all the wishes of the user in the form of cards using the html template<\/li>\n<li><strong>CreateWish:<\/strong> It will allow the user to add new wishes to his\/her list.<\/li>\n<li><strong>UpdateWish:<\/strong> It will update the users Wish.<\/li>\n<li><strong>DeleteWish:<\/strong> It will delete the user&#8217;s wish from the database.<\/li>\n<\/ul>\n<h4>Step 5: Create Forms:<\/h4>\n<p>In this step, we will create our forms. We need forms for adding a new wishlist and adding a new wish to a wishlist. Add the following code to your &#8220;wish\/forms.py&#8221; file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Importing required libraries\r\nfrom django import forms\r\nfrom django.forms import ModelForm\r\nfrom .models import Wish\r\n\r\n# Creating the WishForm class to create a form for the Wish model\r\nclass WishForm(ModelForm):\r\n    \r\n    # Defining the fields of the form\r\n    wishtitle = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))\r\n    wish = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))\r\n    link = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))\r\n    is_achieved = forms.BooleanField(widget=forms.CheckboxInput(attrs={'class':'form-check-input mt-0'}), required=False)\r\n    image = forms.ImageField(widget=forms.FileInput(attrs={'class':'form-control'}))\r\n    \r\n    # Defining the Meta class to define the model and fields of the form\r\n    class Meta:\r\n        \r\n        # Defining the model and fields of the form\r\n        model=Wish\r\n        fields=('wishtitle','wish','link','is_achieved','image')\r\n\r\n        # Defining the labels of the form\r\n        labels={\r\n            'wishtitle':'Wish Title',\r\n            'wish':'Wish',\r\n            'link':'Link',\r\n            'is_achieved':'Is Achieved',\r\n            'image':'Image'\r\n        }<\/pre>\n<p>Here, we have created forms for the `Wish` model. This form will be used in the views we have created earlier.<br \/>\nIn this form we have the following field:<\/p>\n<ul>\n<li><strong>Wishtitle:<\/strong> It is a Text field and it will input the Title of the wish<\/li>\n<li><strong>Wish:<\/strong> It is a Text Field and it will input the description about the wish<\/li>\n<li><strong>Link:<\/strong> It is a TextField and it will input the Link of the the wish<\/li>\n<li><strong>Is_achieved:<\/strong> It is a Boolean field and it will use a checkbox to know the status of the wish.<\/li>\n<li><strong>Image:<\/strong> It is an Image field for uploading the image of the wish.<\/li>\n<\/ul>\n<p>We have also used widgets to give some styling to the input fields.<\/p>\n<h4>Step 6: Create Templates:<\/h4>\n<p>In this step, we will create our templates. We need templates for displaying the list of wishlists, creating a new wish, updating a wish, and deleting a wish. Create the following templates in your &#8220;wishlist\/wish\/templates\/&#8221; directory:<\/p>\n<ul>\n<li>Wishes.html<\/li>\n<li>WishForm.html<\/li>\n<li>DeleteConfirm.html<\/li>\n<\/ul>\n<p><strong>Wishes.html:<\/strong> This page will show the list of users wishes in the form of cards. Wishes that are achieved will be indicated by light-green background and not-achieved wishes will be indicated by light-red background.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=\"utf-8\"&gt;\r\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"&gt;\r\n    &lt;title&gt;My Wish List&lt;\/title&gt;\r\n    &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.2.3\/dist\/css\/bootstrap.min.css\"&gt;\r\n\r\n    &lt;style&gt;\r\n        .light-red {\r\n            background-color: #FFDDDD;\r\n        }\r\n        .light-green {\r\n            background-color: #CCFFCC;\r\n        }\r\n        body {\r\n          background: linear-gradient(180deg, #ebf4f5, #b5c6e0);\r\n          background-size: 100% 100%;\r\n          background-repeat: no-repeat;\r\n          background-attachment: fixed;\r\n          background-position: center;\r\n          background-size: cover;\r\n      }\r\n    &lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;div class=\"container\"&gt;\r\n        &lt;div class=\"row\"&gt;\r\n            &lt;div class=\"col-md-8 mx-auto\"&gt;\r\n              &lt;br&gt;\r\n                &lt;h1 class=\"text-center mb-5\"&gt;My Wish List&lt;\/h1&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n\r\n        &lt;div class=\"row mb-3\"&gt;\r\n            &lt;div class=\"col-md-12 mx-auto\"&gt;\r\n                &lt;a href=\"{% url 'CreateWish' %}\" class=\"btn btn-primary\"&gt;Add New&lt;\/a&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n\r\n\r\n        &lt;div class=\"row\"&gt;\r\n            {% for wish in wishes %}\r\n                &lt;div class=\"col-md-4 mb-4\"&gt;\r\n                    &lt;div class=\"card {% if wish.is_achieved %}light-green{% else %}light-red{% endif %}\"&gt;\r\n                        &lt;img src=\"{{ wish.image.url }}\" class=\"card-img-top\" alt=\"{{ wish.wishtitle }}\"&gt;\r\n                        &lt;div class=\"card-body\"&gt;\r\n                            &lt;h5 class=\"card-title\"&gt;{{ wish.wishtitle }}&lt;\/h5&gt;\r\n                            &lt;p class=\"card-text\"&gt;{{ wish.wish }}&lt;\/p&gt;\r\n                            &lt;a href=\"{{ wish.link }}\" class=\"btn btn-primary\" target=\"_blank\"&gt;Buy Now&lt;\/a&gt;\r\n                            &lt;a href=\"{% url 'UpdateWish' wish.id %}\" class=\"btn btn-secondary\"&gt;Edit&lt;\/a&gt;\r\n                            &lt;a href=\"{% url 'DeleteWish' wish.id %}\" class=\"btn btn-danger\"&gt;Delete&lt;\/a&gt;\r\n                        &lt;\/div&gt;\r\n                        &lt;div class=\"card-footer text-muted\"&gt;\r\n                            Created: {{ wish.date }}\r\n                        &lt;\/div&gt;\r\n                    &lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n            {% endfor %}\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n    &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.2.3\/dist\/js\/bootstrap.bundle.min.js\"&gt;&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><strong>WishForm:<\/strong> This page will be used to both create and update the wishes of the user.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset=\"utf-8\" \/&gt;\r\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/&gt;\r\n    &lt;title&gt;Add\/Update Wish&lt;\/title&gt;\r\n    &lt;link\r\n      rel=\"stylesheet\"\r\n      href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.2.3\/dist\/css\/bootstrap.min.css\"\r\n    \/&gt;\r\n\r\n    &lt;style&gt;\r\n        body {\r\n            background: linear-gradient(180deg, #ebf4f5, #b5c6e0);\r\n            background-size: 100% 100%;\r\n            background-repeat: no-repeat;\r\n            background-attachment: fixed;\r\n            background-position: center;\r\n            background-size: cover;\r\n        }\r\n    &lt;\/style&gt;\r\n\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;div class=\"container mt-4\"&gt;\r\n      &lt;div class=\"row justify-content-center\"&gt;\r\n        &lt;div class=\"col-md-8\"&gt;\r\n          &lt;div class=\"card\"&gt;\r\n            &lt;div class=\"card-header bg-primary text-white\"&gt;Add\/Update Wish&lt;\/div&gt;\r\n            &lt;div class=\"card-body\"&gt;\r\n              &lt;form action=\"\" method=\"POST\" enctype=\"multipart\/form-data\"&gt;\r\n                {% csrf_token %}\r\n                &lt;div class=\"mb-3 input-group\"&gt;\r\n                  &lt;span class=\"input-group-text\"&gt;Wish Title&lt;\/span&gt;\r\n                  {{ form.wishtitle }}\r\n                &lt;\/div&gt;\r\n                &lt;div class=\"mb-3 input-group\"&gt;\r\n                  &lt;span class=\"input-group-text\"&gt;Wish&lt;\/span&gt;\r\n                  {{ form.wish }}\r\n                &lt;\/div&gt;\r\n                &lt;div class=\"mb-3 input-group\"&gt;\r\n                  &lt;span class=\"input-group-text\"&gt;Link of the Wish&lt;\/span&gt;\r\n                  {{ form.link }}\r\n                &lt;\/div&gt;\r\n                &lt;div class=\"mb-3 input-group\"&gt;\r\n                  &lt;span class=\"input-group-text\"&gt;is it achieved?&lt;\/span&gt;\r\n                  &lt;div class=\"input-group-text\"&gt;{{ form.is_achieved }}&lt;\/div&gt;\r\n                &lt;\/div&gt;\r\n                &lt;div class=\"mb-3 input-group\"&gt;\r\n                  &lt;span class=\"input-group-text\"&gt;Image&lt;\/span&gt;\r\n                  {{ form.image }}\r\n                &lt;\/div&gt;\r\n                &lt;div class=\"d-grid gap-2\"&gt;\r\n                  &lt;button class=\"btn btn-success\" type=\"submit\"&gt;Save&lt;\/button&gt;\r\n                &lt;\/div&gt;\r\n                {% if wish %}\r\n                &lt;div class=\"d-grid gap-2 mt-2\"&gt;\r\n                  &lt;a\r\n                    href=\"{% url 'DeleteWish' wish.id %}\"\r\n                    class=\"btn btn-danger\"\r\n                    type=\"submit\"\r\n                    &gt;Delete&lt;\/a\r\n                  &gt;\r\n                &lt;\/div&gt;\r\n                {% endif %}\r\n              &lt;\/form&gt;\r\n            &lt;\/div&gt;\r\n          &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n      &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><strong>DeleteConfirm:<\/strong> When a user will click on the delete button on the Wish card, This page will confirm whether to really delete the wish or not.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset=\"UTF-8\" \/&gt;\r\n    &lt;title&gt;Confirm Delete&lt;\/title&gt;\r\n    &lt;!-- Bootstrap 5 CSS --&gt;\r\n    &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.0.0\/dist\/css\/bootstrap.min.css\"\/&gt;\r\n\r\n    &lt;style&gt;\r\n        body {\r\n            background: linear-gradient(180deg, #ebf4f5, #b5c6e0);\r\n            background-size: 100% 100%;\r\n            background-repeat: no-repeat;\r\n            background-attachment: fixed;\r\n            background-position: center;\r\n            background-size: cover;\r\n        }\r\n    &lt;\/style&gt;\r\n\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;div class=\"container my-5\"&gt;\r\n      &lt;div class=\"row justify-content-center\"&gt;\r\n        &lt;div class=\"col-md-6\"&gt;\r\n          &lt;div class=\"card\"&gt;\r\n            &lt;div class=\"card-body\"&gt;\r\n              &lt;h2 class=\"card-title mb-4\"&gt;Confirm Delete&lt;\/h2&gt;\r\n              &lt;h4 class=\"card-subtitle mb-3\"&gt;\"{{ wish.wishtitle }}\"&lt;\/h4&gt;\r\n              &lt;p class=\"card-text mb-4\"&gt;\r\n                Are you sure you want to delete this wish?\r\n              &lt;\/p&gt;\r\n              &lt;form method=\"POST\"&gt;\r\n                {% csrf_token %}\r\n                &lt;button class=\"btn btn-danger me-3\" type=\"submit\"&gt;Yes&lt;\/button&gt;\r\n                &lt;a class=\"btn btn-success\" href=\"{% url 'WishList' %}\"&gt;No&lt;\/a&gt;\r\n              &lt;\/form&gt;\r\n            &lt;\/div&gt;\r\n          &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n      &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    &lt;!-- Bootstrap 5 JS --&gt;\r\n    &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.0.0\/dist\/js\/bootstrap.bundle.min.js\"&gt;&lt;\/script&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<h4>Step 7: Create URLs:<\/h4>\n<p>In this step, we will create our URLs. We need URLs for our views. Add the following code to your &#8220;wish\/urls.py&#8221; file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Importing the views from the wish app\r\nfrom django.urls import path\r\nfrom .views import CreateWish,UpdateWish,DeleteWish,WishList\r\nfrom django.conf import settings\r\nfrom django.conf.urls.static import static\r\n\r\n# Defining the urlpatterns for the wish app\r\nurlpatterns=[\r\n    path('',WishList,name='WishList'),\r\n    path('create',CreateWish,name='CreateWish'),\r\n    path('update\/&lt;int:id&gt;',UpdateWish,name='UpdateWish'),\r\n    path('delete\/&lt;int:id&gt;',DeleteWish,name='DeleteWish'),\r\n]<\/pre>\n<p>Here we have imported the Views from the \u2018Views.py\u2019 file and mapped them with the url pattern. So that if the matched url pattern is accessed, it will guide the user accordingly.<\/p>\n<h4>Step 8: Test Your Application:<\/h4>\n<p>In this step, we will test our application. Start the development server using the following command:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">python manage.py runserver\r\n<\/pre>\n<p>Open your web browser and go to &#8220;http:\/\/127.0.0.1:8000\/&#8221;. You should see a list of wishes. You can add new wishes to the list by clicking on the &#8220;Add&#8221; button. You can update and delete the wish by clicking on the edit and delete buttons respectively.<\/p>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app-output-scaled.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-115628 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app-output-scaled.webp\" alt=\"django wishlist app output\" width=\"2560\" height=\"1547\" \/><\/a><\/p>\n<h3><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/wishlist-app-output-scaled.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-115629 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/wishlist-app-output-scaled.webp\" alt=\"wishlist app output\" width=\"2560\" height=\"1552\" \/><\/a><\/h3>\n<h3>Summary<\/h3>\n<p>Congratulations! You have successfully created a WishList Django Web Application. You can now add more features according to your needs. For example, you can add user authentication, search functionality, pagination, etc.<span hidden class=\"__iawmlf-post-loop-links\" data-iawmlf-links=\"[{&quot;id&quot;:2572,&quot;href&quot;:&quot;https:\\\/\\\/drive.google.com\\\/file\\\/d\\\/1M_cG0043iVsiL__qNLF7JRPwQG4uv0WY\\\/view?usp=drive_link&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20260601072929\\\/https:\\\/\\\/drive.google.com\\\/file\\\/d\\\/1M_cG0043iVsiL__qNLF7JRPwQG4uv0WY\\\/view?usp=drive_link&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-06-02 07:10:32&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-06 14:56:13&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-06 14:56:13&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wishlist is an essential part of everyone&#8217;s life. It&#8217;s always great to have a list of things that you want to do, achieve, or own. In this project, we will create a simple Wishlist&#46;&#46;&#46;<\/p>\n","protected":false},"author":581,"featured_media":115627,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19149],"tags":[21674,27785,21610,27779,27780,27783,27784,27781,27782],"class_list":["post-114631","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-django","tag-django-project-ideas","tag-django-projects","tag-django-projects-with-source-code","tag-django-wishlist-app","tag-django-wishlist-app-project","tag-python-django-project-for-practice","tag-python-django-wishlist-app","tag-python-django-wishlist-app-project","tag-wishlist-app-project"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python Django WishList App \u2013 Fuel Your Aspirations - DataFlair<\/title>\n<meta name=\"description\" content=\"Unlock your wishlist dreams with our powerful Python Django Wishlist App. Easily organize, track, and achieve your desires.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Django WishList App \u2013 Fuel Your Aspirations - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Unlock your wishlist dreams with our powerful Python Django Wishlist App. Easily organize, track, and achieve your desires.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-21T03:30:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-01T07:29:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python Django WishList App \u2013 Fuel Your Aspirations - DataFlair","description":"Unlock your wishlist dreams with our powerful Python Django Wishlist App. Easily organize, track, and achieve your desires.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/","og_locale":"en_US","og_type":"article","og_title":"Python Django WishList App \u2013 Fuel Your Aspirations - DataFlair","og_description":"Unlock your wishlist dreams with our powerful Python Django Wishlist App. Easily organize, track, and achieve your desires.","og_url":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2023-06-21T03:30:22+00:00","article_modified_time":"2026-06-01T07:29:52+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app.webp","type":"image\/webp"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/c187795dc82ab948373cca526df7c445"},"headline":"Python Django WishList App \u2013 Fuel Your Aspirations","datePublished":"2023-06-21T03:30:22+00:00","dateModified":"2026-06-01T07:29:52+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/"},"wordCount":881,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app.webp","keywords":["Django Project Ideas","django projects","django projects with source code","django wishlist app","django wishlist app project","python django project for practice","python django wishlist app","python django wishlist app project","wishlist app project"],"articleSection":["Django Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/","url":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/","name":"Python Django WishList App \u2013 Fuel Your Aspirations - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app.webp","datePublished":"2023-06-21T03:30:22+00:00","dateModified":"2026-06-01T07:29:52+00:00","description":"Unlock your wishlist dreams with our powerful Python Django Wishlist App. Easily organize, track, and achieve your desires.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app.webp","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2023\/06\/django-wishlist-app.webp","width":1200,"height":628,"caption":"django wishlist app"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/python-django-wishlist-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Django Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/django\/"},{"@type":"ListItem","position":3,"name":"Python Django WishList App \u2013 Fuel Your Aspirations"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/c187795dc82ab948373cca526df7c445","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team provides high-impact content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. We make complex concepts easy to grasp, helping learners of all levels succeed in their tech careers.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam6\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/114631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/581"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=114631"}],"version-history":[{"count":7,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/114631\/revisions"}],"predecessor-version":[{"id":148653,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/114631\/revisions\/148653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/115627"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=114631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=114631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=114631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}