

{"id":80752,"date":"2020-08-14T21:38:04","date_gmt":"2020-08-14T16:08:04","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=80752"},"modified":"2021-08-25T13:47:49","modified_gmt":"2021-08-25T08:17:49","slug":"python-project-calorie-calculator-django","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/","title":{"rendered":"Python Project &#8211; Create a Calorie Calculator in Django"},"content":{"rendered":"<p>In this article, we will develop a Django project &#8211; Calorie Calculator. This is a nice intermediate level project to master Django and Python<\/p>\n<h3>What is a Calorie Calculator?<\/h3>\n<p>\u201dHealth is wealth\u201d Obviously, you have heard it a thousand times but as we grow older we often realize it\u2019s true and this app provides an interesting way to get started with the very boring term \u201cdieting\u201d as we already know \u201cFITNESS START WITH WHAT WE EAT\u201d.<\/p>\n<p>Let&#8217;s develop an interesting project &#8211; Calorie Calculator to record and estimate number of calories we need to consume daily. This app can also provide guidelines for gaining or losing weight.<\/p>\n<h2>Calorie Calculator in Python &#8211; Django Project<\/h2>\n<p>This exciting python project will be developed using a python Django. Django framework provides inbuilt libraries for web development. We can develop any kind of web app using Django.<\/p>\n<h3>Project Prerequisites<\/h3>\n<p>To implement this app we will use :<\/p>\n<ol>\n<li>Basic concepts of Python<\/li>\n<li>HTML<\/li>\n<li>CSS<\/li>\n<li>Bootstrap<\/li>\n<li>Django framework<\/li>\n<\/ol>\n<p>To install required libraries, use pip installer from the command line: (Django filters are used and explained later)<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">pip install django\r\npip install django-filters\r\n<\/pre>\n<h3>Final product<\/h3>\n<p>Below is the final GUI of Calorie Calculator Project<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80757\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page.png\" alt=\"project user home page\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<h3>Download Project Code<\/h3>\n<p>Before proceeding ahead, please download the calorie calculator project source code: <a href=\"https:\/\/data-flair.training\/blogs\/download-calorie-calculator-source-code\/\"><strong>Calorie Calculator in Python<\/strong><\/a><\/p>\n<h3>Steps to Build a Python Project \u2013 Calorie calculator<\/h3>\n<p>Now we will make a new project CalorieCalc and an app inside it named \u2018Fityfeed\u2019<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">django-admin startproject CalorieClac\r\ncd  CalorieClac\r\ndjango-admin startapp Fityfeed\r\n<\/pre>\n<h4>1. Writing Models: <strong>models.py<\/strong><\/h4>\n<p>To access databases, we will need the model.<\/p>\n<p>In\u00a0Fityfeed\/models.py, create these models.<\/p>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from\u00a0django.db\u00a0import\u00a0models\r\nfrom\u00a0django.contrib.auth.models\u00a0import\u00a0User\r\n\r\n#\u00a0Create\u00a0your\u00a0models\u00a0here.\r\nclass\u00a0Customer(models.Model):\r\n\u00a0\u00a0\u00a0\u00a0user\u00a0=\u00a0models.OneToOneField(User,\u00a0null=True,\u00a0on_delete=models.CASCADE)\r\n\u00a0\u00a0\u00a0\u00a0name=models.CharField(max_length=200,null=True)\r\n\u00a0\u00a0\u00a0\u00a0email=models.CharField(max_length=200,null=True)\r\n\u00a0\u00a0\u00a0\u00a0date_created=models.DateTimeField(auto_now_add=True,null=True)\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0def\u00a0__str__(self):\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0str(self.name)\r\n\r\nclass\u00a0Category(models.Model):\r\n\u00a0\u00a0\u00a0\u00a0options=(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0('breakfast','breakfast'),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0('lunch','lunch'),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0('dinner','dinner'),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0('snacks','snacks'),\r\n\u00a0\u00a0\u00a0\u00a0)\r\n\u00a0\u00a0\u00a0\u00a0name=models.CharField(max_length=50,choices=options)\r\n\u00a0\u00a0\u00a0\u00a0def\u00a0__str__(self):\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0self.name\r\n\r\nclass\u00a0Fooditem(models.Model):\r\n\u00a0\u00a0\u00a0\u00a0name\u00a0=\u00a0models.CharField(max_length=200)\r\n\u00a0\u00a0\u00a0\u00a0category\u00a0=\u00a0models.ManyToManyField(Category)\r\n\u00a0\u00a0\u00a0\u00a0carbohydrate\u00a0=\u00a0models.DecimalField(max_digits=5,decimal_places=2,default=0)\r\n\u00a0\u00a0\u00a0\u00a0fats\u00a0=\u00a0models.DecimalField(max_digits=5,decimal_places=2,default=0)\r\n\u00a0\u00a0\u00a0\u00a0protein\u00a0=\u00a0models.DecimalField(max_digits=5,decimal_places=2,default=0)\r\n\u00a0\u00a0\u00a0\u00a0calorie=models.DecimalField(max_digits=5,decimal_places=2,default=0,blank=True)\r\n\u00a0\u00a0\u00a0\u00a0quantity\u00a0=\u00a0models.IntegerField(default=1,null=True,blank=True)\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0def\u00a0__str__(self):\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0str(self.name)\r\n\r\n#for\u00a0user\u00a0page-------------------------------------------------------------\r\nclass\u00a0UserFooditem(models.Model):\r\n\u00a0\u00a0\u00a0\u00a0customer\u00a0=\u00a0models.ManyToManyField(Customer ,blank=True)\r\n\u00a0\u00a0\u00a0\u00a0fooditem=models.ManyToManyField(Fooditem)\r\n<\/pre>\n<p>Our models will store:<\/p>\n<ol>\n<li>Customers<\/li>\n<li>All available food items<\/li>\n<li>Category of food items we offer<\/li>\n<li>Consumed food items<\/li>\n<\/ol>\n<p>We are using simple model fields for that purpose. The __str__() method will return the string representation of the object. These are simple Django concepts.<\/p>\n<h4>2. Authentication: <strong>decorators.py<\/strong><\/h4>\n<p><strong>Code:\u00a0<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from\u00a0django.http\u00a0import\u00a0HttpResponse\r\nfrom\u00a0django.shortcuts\u00a0import\u00a0redirect\r\n\r\ndef\u00a0unauthorized_user(view_func):\u00a0\r\n\u00a0\u00a0\u00a0\u00a0def\u00a0wrapper_func(request,*args,**kwargs):\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0request.user.is_authenticated:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('home')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0view_func(request,*args,**kwargs)\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0wrapper_func\r\n\r\ndef\u00a0allowed_users(allowed_roles=[]):\r\n\u00a0\u00a0\u00a0\u00a0def\u00a0decorator(view_func):\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0def\u00a0wrapper_func(request,*args,**kwargs):\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0group=None\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0request.user.groups.exists():\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0group=request.user.groups.all()[0].name\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0group\u00a0in\u00a0allowed_roles:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0view_func(request,*args,**kwargs)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0HttpResponse(\"&lt;h1&gt;You\u00a0are\u00a0not\u00a0allowed\u00a0to\u00a0access\u00a0this\u00a0page&lt;\/h1&gt;\")\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0wrapper_func\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0decorator\r\n\r\ndef\u00a0admin_only(view_func):\r\n\u00a0\u00a0\u00a0\u00a0def\u00a0wrapper_func(request,*args,**kwargs):\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0group=None\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0request.user.groups.exists():\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0group=request.user.groups.all()[0].name\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0group=='user':\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('userPage')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0group=='admin':\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0view_func(request,*args,**kwargs)\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0wrapper_func\r\n<\/pre>\n<p>This will take care of all access privileges so that the customer and the admin cannot access each other\u2019s data. Also, it will make sure that the logged-in user can\u2019t go to the login\/register page, unauthorized users can\u2019t access any page except login and registration page.<\/p>\n<h4>3. Search feature: <strong>filers.py<\/strong><\/h4>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import\u00a0django_filters\r\nfrom\u00a0.models\u00a0import\u00a0*\r\n\r\nclass\u00a0fooditemFilter(django_filters.FilterSet):\r\n\u00a0\u00a0\u00a0\u00a0class\u00a0Meta:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0model\u00a0=\u00a0Fooditem\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fields\u00a0=\u00a0['name']\r\n<\/pre>\n<p>This includes a small code which enables search filter for the user.<\/p>\n<h4>4. Creating and updating models: <strong>forms.py<\/strong><\/h4>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from\u00a0django.forms\u00a0import\u00a0ModelForm\r\nfrom\u00a0.models\u00a0import\u00a0*\r\nfrom\u00a0django.contrib.auth.forms\u00a0import\u00a0UserCreationForm\r\n\r\nclass\u00a0fooditemForm(ModelForm):\r\n\u00a0\u00a0\u00a0\u00a0class\u00a0Meta:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0model=Fooditem\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fields=\"__all__\"\r\n\r\nclass\u00a0addUserFooditem(ModelForm):\r\n\u00a0\u00a0\u00a0\u00a0class\u00a0Meta:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0model=UserFooditem\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fields=\"__all__\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nclass\u00a0createUserForm(UserCreationForm):\r\n\u00a0\u00a0\u00a0\u00a0class\u00a0Meta:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0model=User\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fields=['username','email','password1','password2']\r\n<\/pre>\n<p>Above mentioned code is required to create, update models which we have created earlier in models.py (for CRUD functionality)<\/p>\n<h4>5. To create\/update models from django admin site: <strong>admin.py<\/strong><\/h4>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from django.contrib import admin\r\nfrom .models import *\r\n\r\n# Now, Register the models here.\r\n\r\nclass foodAdmin(admin.ModelAdmin):\r\n\u00a0\u00a0\u00a0\u00a0class Meta:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0model=Fooditem\r\n\u00a0\u00a0\u00a0\u00a0list_display=['name']\r\n\u00a0\u00a0\u00a0\u00a0list_filter=['name']\r\n\r\nadmin.site.register(Customer)\r\nadmin.site.register(UserFooditem)\r\nadmin.site.register(Category)\r\nadmin.site.register(Fooditem,foodAdmin)\r\n<\/pre>\n<p>It will register all our models to admin site, Now we can easily create\/update on following UI: http:\/\/127.0.0.1:8000\/admin\/<\/p>\n<p>NOTE: Create a superuser and apply all migrations:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">py manage.py makemigrations\r\npy manage.py migrate\r\npy manage.py createsuperuser\r\n<\/pre>\n<p>It will ask for your username, email, password.<\/p>\n<p>And then boom! You are more than halfway towards reaching your goal.<\/p>\n<h4>6. Let\u2019s work with <strong>urls.py<\/strong><\/h4>\n<p>First, we need to make a new file urls.py in our app and include it in \u2018CalorieCalc\/urls.py\u2019 so that it finally contains<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from\u00a0django.contrib\u00a0import\u00a0admin\r\nfrom\u00a0django.urls\u00a0import\u00a0path, include\r\n\r\nurlpatterns\u00a0=\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0path('admin\/',\u00a0admin.site.urls),\r\n\u00a0\u00a0\u00a0\u00a0path('',include('Fityfeed.urls')),\r\n]\r\n<\/pre>\n<p>Now let&#8217;s work with Fityfeed\/urls.py<\/p>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from\u00a0django.urls\u00a0import\u00a0path,include\r\nfrom\u00a0.\u00a0import\u00a0views\r\nfrom\u00a0django.contrib.auth\u00a0import\u00a0views\u00a0as\u00a0auth_views\r\n\r\nurlpatterns\u00a0=\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0path('',views.home,name='home'),\r\n\u00a0\u00a0\u00a0\u00a0path('user\/',views.userPage,name='userPage'),\u00a0#userPage\r\n\u00a0\u00a0\u00a0\u00a0path('product\/',views.fooditem,name='fooditem'),\r\n\u00a0\u00a0\u00a0\u00a0path('createfooditem\/',views.createfooditem,name='createfooditem'),\r\n\u00a0\u00a0\u00a0\u00a0path('register\/',views.registerPage,name='register'),\r\n\u00a0\u00a0\u00a0\u00a0path('login\/',views.loginPage,name='login'),\r\n\u00a0\u00a0\u00a0\u00a0path('logout\/',views.logoutUser,name='logout'),\r\n\u00a0\u00a0\u00a0\u00a0path('addFooditem\/',views.addFooditem,name='addFooditem'),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0path('reset_password\/',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0auth_views.PasswordResetView.as_view(),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name=\"reset_password\"),\r\n\r\n\u00a0\u00a0\u00a0\u00a0path('reset_password_sent\/',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0auth_views.PasswordResetDoneView.as_view(),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name=\"password_reset_done\"),\r\n\r\n\u00a0\u00a0\u00a0\u00a0path('reset\/&lt;uidb64&gt;\/&lt;token&gt;\/',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0auth_views.PasswordResetConfirmView.as_view(),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name=\"password_reset_confirm\"),\r\n\r\n\u00a0\u00a0\u00a0\u00a0path('reset_password_complete\/',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0auth_views.PasswordResetCompleteView.as_view(),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name=\"password_reset_complete\"),\r\n]\r\n<\/pre>\n<p>It contains a lot more than we\u2019ve discussed right. No worries, we\u2019ll get it as soon as we step further.<\/p>\n<h4>7. Let\u2019s finally set our <strong>\u2018views.py\u2019<\/strong><\/h4>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from\u00a0django.shortcuts\u00a0import\u00a0render,redirect\r\nfrom\u00a0django.http\u00a0import\u00a0HttpResponse\r\nfrom\u00a0django.contrib.auth.models\u00a0import\u00a0User\r\nfrom\u00a0.models\u00a0import\u00a0*\r\nfrom\u00a0.forms\u00a0import\u00a0*\r\nfrom\u00a0django.contrib\u00a0import\u00a0messages\r\nfrom\u00a0django.contrib.auth\u00a0import\u00a0authenticate,login,logout\r\nfrom\u00a0django.contrib.auth.decorators\u00a0import\u00a0login_required\r\nfrom\u00a0.decorators\u00a0import\u00a0*\r\nfrom\u00a0django.contrib.auth.models\u00a0import\u00a0Group\r\nfrom\u00a0.filters\u00a0import\u00a0fooditemFilter\r\n#\u00a0Create\u00a0your\u00a0views\u00a0here.\r\n\r\n@login_required(login_url='login')\r\n@admin_only\r\ndef\u00a0home(request):\r\n\u00a0\u00a0\u00a0\u00a0breakfast=Category.objects.filter(name='breakfast')[0].fooditem_set.all()[:5]\r\n\u00a0\u00a0\u00a0\u00a0lunch=Category.objects.filter(name='lunch')[0].fooditem_set.all()[:5]\r\n\u00a0\u00a0\u00a0\u00a0dinner=Category.objects.filter(name='dinner')[0].fooditem_set.all()[:5]\r\n\u00a0\u00a0\u00a0\u00a0snacks=Category.objects.filter(name='snacks')[0].fooditem_set.all()[:5]\r\n\u00a0\u00a0\u00a0\u00a0customers=Customer.objects.all()\r\n\u00a0\u00a0\u00a0\u00a0context={'breakfast':breakfast,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'lunch':lunch,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'dinner':dinner,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'snacks':snacks,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'customers':customers,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'main.html',context)\r\n\r\n@login_required(login_url='login')\r\n@allowed_users(allowed_roles=['admin'])\r\ndef\u00a0fooditem(request):\r\n\u00a0\u00a0\u00a0\u00a0breakfast=Category.objects.filter(name='breakfast')[0].fooditem_set.all()\r\n\u00a0\u00a0\u00a0\u00a0bcnt=breakfast.count()\r\n\u00a0\u00a0\u00a0\u00a0lunch=Category.objects.filter(name='lunch')[0].fooditem_set.all()\r\n\u00a0\u00a0\u00a0\u00a0lcnt=lunch.count()\r\n\u00a0\u00a0\u00a0\u00a0dinner=Category.objects.filter(name='dinner')[0].fooditem_set.all()\r\n\u00a0\u00a0\u00a0\u00a0dcnt=dinner.count()\r\n\u00a0\u00a0\u00a0\u00a0snacks=Category.objects.filter(name='snacks')[0].fooditem_set.all()\r\n\u00a0\u00a0\u00a0\u00a0scnt=snacks.count()\r\n\u00a0\u00a0\u00a0\u00a0context={'breakfast':breakfast,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'bcnt':bcnt,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'lcnt':lcnt,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'scnt':scnt,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'dcnt':dcnt,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'lunch':lunch,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'dinner':dinner,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'snacks':snacks,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'fooditem.html',context)\r\n\r\n@login_required(login_url='login')\r\n@allowed_users(allowed_roles=['admin'])\r\ndef\u00a0createfooditem(request):\r\n\u00a0\u00a0\u00a0\u00a0form\u00a0=\u00a0fooditemForm()\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0request.method\u00a0==\u00a0'POST':\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form\u00a0=\u00a0fooditemForm(request.POST)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0form.is_valid():\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form.save()\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('\/')\r\n\u00a0\u00a0\u00a0\u00a0context={'form':form}\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'createfooditem.html',context)\r\n\r\n@unauthorized_user\r\ndef\u00a0registerPage(request):\r\n\u00a0\u00a0\u00a0\u00a0form=createUserForm()\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0request.method=='POST':\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form=createUserForm(request.POST)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0form.is_valid():\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0user=form.save()\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0username=form.cleaned_data.get('username')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0group=Group.objects.get(name='user')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0user.groups.add(group)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0email=form.cleaned_data.get('email')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Customer.objects.create(user=user,\u00a0name=username,email=email)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0messages.success(request,'Account\u00a0created\u00a0for\u00a0'+username)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('login')\r\n\u00a0\u00a0\u00a0\u00a0context={'form':form}\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'register.html',context)\r\n\r\n@unauthorized_user\r\ndef\u00a0loginPage(request):\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0request.method=='POST':\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0username=request.POST.get('username')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0password=request.POST.get('password')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0user=authenticate(request,username=username,password=password)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0user\u00a0is\u00a0not\u00a0None:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0login(request,user)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('home')\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0messages.info(request,'username\u00a0or\u00a0password\u00a0is\u00a0invalid')\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'login.html')\r\n\r\n\r\n@login_required(login_url='login')\r\ndef\u00a0logoutUser(request):\r\n\u00a0\u00a0\u00a0\u00a0logout(request)\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('login')\r\n\r\ndef\u00a0userPage(request):\r\n\u00a0\u00a0\u00a0\u00a0user=request.user\r\n\u00a0\u00a0\u00a0\u00a0cust=user.customer\r\n\u00a0\u00a0\u00a0\u00a0fooditems=Fooditem.objects.filter()\r\n\u00a0\u00a0\u00a0\u00a0myfilter\u00a0=\u00a0fooditemFilter(request.GET,queryset=fooditems)\r\n\u00a0\u00a0\u00a0\u00a0fooditems=myfilter.qs\r\n\u00a0\u00a0\u00a0\u00a0total=UserFooditem.objects.all()\r\n\u00a0\u00a0\u00a0\u00a0myfooditems=total.filter(customer=cust)\r\n\u00a0\u00a0\u00a0\u00a0cnt=myfooditems.count()\r\n\u00a0\u00a0\u00a0\u00a0querysetFood=[]\r\n\u00a0\u00a0\u00a0\u00a0for\u00a0food\u00a0in\u00a0myfooditems:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0querysetFood.append(food.fooditem.all())\r\n\u00a0\u00a0\u00a0\u00a0finalFoodItems=[]\r\n\u00a0\u00a0\u00a0\u00a0for\u00a0items\u00a0in\u00a0querysetFood:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for\u00a0food_items\u00a0in\u00a0items:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0finalFoodItems.append(food_items)\r\n\u00a0\u00a0\u00a0\u00a0totalCalories=0\r\n\u00a0\u00a0\u00a0\u00a0for\u00a0foods\u00a0in\u00a0finalFoodItems:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0totalCalories+=foods.calorie\r\n\u00a0\u00a0\u00a0\u00a0CalorieLeft=2000-totalCalories\r\n\u00a0\u00a0\u00a0\u00a0context={'CalorieLeft':CalorieLeft,'totalCalories':totalCalories,'cnt':cnt,'foodlist':finalFoodItems,'fooditem':fooditems,'myfilter':myfilter}\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'user.html',context)\r\n\r\n\r\ndef\u00a0addFooditem(request):\r\n\u00a0\u00a0\u00a0\u00a0user=request.user\r\n\u00a0\u00a0\u00a0\u00a0cust=user.customer\r\n\u00a0\u00a0\u00a0\u00a0if\u00a0request.method==\"POST\":\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form\u00a0=addUserFooditem(request.POST)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0form.is_valid():\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form.save()\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0redirect('\/')\r\n\u00a0\u00a0\u00a0\u00a0form=addUserFooditem()\r\n\u00a0\u00a0\u00a0\u00a0context={'form':form}\r\n\u00a0\u00a0\u00a0\u00a0return\u00a0render(request,'addUserFooditem.html',context)\r\n\r\n<\/pre>\n<p><strong>Registration Page:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80758\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page.png\" alt=\"register page\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/register-page-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><strong>Login Page:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80759\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page.png\" alt=\"project login page\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-login-page-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><strong>User Page:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80757\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page.png\" alt=\"project user home page\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-user-home-page-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><strong>Admin Page:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80761\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2.png\" alt=\"project admin page\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/project-admin-page-2-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>7. Let\u2019s do some styling<\/h4>\n<p>We need to make a new static folder in the outer project folder. For this, we need to customize our <strong>setting.py<\/strong> and append the following<\/p>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">STATIC_URL\u00a0=\u00a0'\/static\/'\r\nSTATICFILES_DIRS\u00a0=\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0os.path.join(BASE_DIR,'static'),\r\n]\r\n<\/pre>\n<p>We need to use this line \u2018{% load static %}\u2019 in our templates and now make a new file <strong>main.css<\/strong> in our static folder:<\/p>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">.flex-box-row\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0display:flex;\r\n\u00a0\u00a0\u00a0\u00a0padding\u00a0:\u00a010px;\r\n\u00a0\u00a0\u00a0\u00a0flex-wrap:\u00a0wrap;\r\n\u00a0\u00a0\u00a0\u00a0justify-content:\u00a0space-around;\r\n}\r\n\r\n#heading{\r\n\u00a0\u00a0\u00a0\u00a0text-shadow:\u00a0antiquewhite;\r\n\u00a0\u00a0\u00a0\u00a0font-family:\u00a0'Courier\u00a0New',\u00a0Courier,\u00a0monospace;\r\n\u00a0\u00a0\u00a0\u00a0font-weight:\u00a0550;\r\n\u00a0\u00a0\u00a0\u00a0font-size:\u00a0xx-large;\r\n\u00a0\u00a0\u00a0\u00a0text-align:\u00a0left;\r\n}\r\n<\/pre>\n<h4>8. Now the last step, develop templates:<\/h4>\n<p>This you can easily get from source code as there are many files so pasting it here would make it bigger.<\/p>\n<h4>9. Forget password functionality:<\/h4>\n<p>Include this in your <strong>setting.py<\/strong><\/p>\n<p><strong>Code:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'\r\nEMAIL_HOST='smtp.gmail.com'\r\nEMAIL_PORT=587\r\nEMAIL_USE_TLS=True\r\nEMAIL_HOST_USER='***'\r\nEMAIL_HOST_PASSWORD='***'\r\n<\/pre>\n<p>Do not forget to include your email and password here.<\/p>\n<h4>10. Output Screens<\/h4>\n<p>Below are some random screens of Calorie Calculator Python Project<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80762\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food.png\" alt=\"calorie add food\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/calorie-add-food-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-80763\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item.png\" alt=\"admin add food item\" width=\"1366\" height=\"728\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item.png 1366w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item-300x160.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item-1024x546.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item-768x409.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/admin-add-food-item-520x277.png 520w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<h2>Summary<\/h2>\n<p>We have successfully developed the calorie calculator python project in Django and now we can use it every day to keep track of what we eat and how much we should eat.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we will develop a Django project &#8211; Calorie Calculator. This is a nice intermediate level project to master Django and Python What is a Calorie Calculator? \u201dHealth is wealth\u201d Obviously, you&#46;&#46;&#46;<\/p>\n","protected":false},"author":10,"featured_media":80769,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46],"tags":[22973,22975,22974,19201,21082],"class_list":["post-80752","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-calorie-calculator","tag-calorie-calculator-django","tag-calorie-calculator-python","tag-django-project","tag-python-project"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python Project - Create a Calorie Calculator in Django - DataFlair<\/title>\n<meta name=\"description\" content=\"Calorie Calculator Python Django Project - Develop a web application to track the calorie intake and take care of your health. This interesting python project help to record and estimate no of calories we need to consume\" \/>\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-project-calorie-calculator-django\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Project - Create a Calorie Calculator in Django - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Calorie Calculator Python Django Project - Develop a web application to track the calorie intake and take care of your health. This interesting python project help to record and estimate no of calories we need to consume\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/\" \/>\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=\"2020-08-14T16:08:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-25T08:17:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/python-project-calorie-calculator-django.jpg\" \/>\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\/jpeg\" \/>\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=\"9 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python Project - Create a Calorie Calculator in Django - DataFlair","description":"Calorie Calculator Python Django Project - Develop a web application to track the calorie intake and take care of your health. This interesting python project help to record and estimate no of calories we need to consume","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-project-calorie-calculator-django\/","og_locale":"en_US","og_type":"article","og_title":"Python Project - Create a Calorie Calculator in Django - DataFlair","og_description":"Calorie Calculator Python Django Project - Develop a web application to track the calorie intake and take care of your health. This interesting python project help to record and estimate no of calories we need to consume","og_url":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2020-08-14T16:08:04+00:00","article_modified_time":"2021-08-25T08:17:49+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/python-project-calorie-calculator-django.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33"},"headline":"Python Project &#8211; Create a Calorie Calculator in Django","datePublished":"2020-08-14T16:08:04+00:00","dateModified":"2021-08-25T08:17:49+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/"},"wordCount":689,"commentCount":36,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/python-project-calorie-calculator-django.jpg","keywords":["calorie calculator","calorie calculator django","Calorie Calculator python","Django Project","Python project"],"articleSection":["Python Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/","url":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/","name":"Python Project - Create a Calorie Calculator in Django - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/python-project-calorie-calculator-django.jpg","datePublished":"2020-08-14T16:08:04+00:00","dateModified":"2021-08-25T08:17:49+00:00","description":"Calorie Calculator Python Django Project - Develop a web application to track the calorie intake and take care of your health. This interesting python project help to record and estimate no of calories we need to consume","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/python-project-calorie-calculator-django.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/python-project-calorie-calculator-django.jpg","width":1200,"height":628,"caption":"python project calorie calculator django"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/python-project-calorie-calculator-django\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Python Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/python\/"},{"@type":"ListItem","position":3,"name":"Python Project &#8211; Create a Calorie Calculator in Django"}]},{"@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\/a90b082e16aa38d207212d22b0581f33","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team is passionate about delivering top-notch tutorials and resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With expertise in the tech industry, we simplify complex topics to help learners excel. Stay updated with our latest insights.","url":"https:\/\/data-flair.training\/blogs\/author\/dfadteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/80752","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=80752"}],"version-history":[{"count":4,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/80752\/revisions"}],"predecessor-version":[{"id":80792,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/80752\/revisions\/80792"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/80769"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=80752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=80752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=80752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}