Project 3: Pizza

Objectives

Overview

In this project, you’ll build an web application for handling a pizza restaurant’s online orders. Users will be able to browse the restaurant’s menu, add items to their cart, and submit their orders. Meanwhile, the restaurant owners will be able to add and update menu items, and view orders that have been placed.

Milestones

We recommend that you try to meet the following milestones in order:

Getting Started

Python and Django

As with Projects 1 and 2, make sure that you have a copy of Python 3.6 or higher installed on your machine. You’ll also need to install pip. If you downloaded Python from Python’s website, you likely already have pip installed (you can check by running pip in a terminal window). If you don’t have it installed, be sure to install it before moving on!

To run this Django application:

  1. Download the project3 distribution code from https://cdn.cs50.net/web/2020/x/projects/3/project3.zip and unzip it.
  2. In a terminal window, navigate into your project3 directory. Note that this is the directory for a Django project called pizza, inside of which is an app already created for you called orders.
  3. Run pip3 install -r requirements.txt in your terminal window to make sure that all of the necessary Python packages (Django, in this instance) are installed.
  4. Run python manage.py runserver to start up your Django application.
  5. If you navigate to the URL provided by Django, you should see the text "Project 3: TODO"!

Requirements

Alright, it’s time to actually build your web application! Here are the requirements:

Beyond these requirements, the design, look, and feel of the website are up to you! You’re also welcome to add additional features to your website, so long as you meet the requirements laid out in the above specification!

Hints

FAQs

What is a “Special” pizza?

It’s up to you to decide what a “special” pizza means, and to implement it accordingly. It could be one particular set of toppings, allowing up to 5 different types of toppings, or something else entirely!