diff --git a/shop/routes.py b/shop/routes.py
index a97329796bd18b993bd4a52955688424ce1bc2e5..ad6f95d9893fbc7a51bcc0de34a69aab07c51404 100644
--- a/shop/routes.py
+++ b/shop/routes.py
@@ -98,11 +98,11 @@ def shopping():
     # renders the shopping page
     return render_template('shopping.html', product_table = products_pass, order_by_form = order_by_form, type_form = type_form)
 
+
 # used to make lists for cart and wishlist
 # creates a list for the current user and takes the string of ids which consists of the item
 # ids of the items and splits up by spaces. It returns the item_list it adds the rows for the items that are in the
 # current users cart as well as the id_list which is a list of ids
-
 def make_lists(item_id_string):
     id_list = item_id_string.split()
     item_list = []
@@ -113,11 +113,12 @@ def make_lists(item_id_string):
                 item_list.append(item)
     return item_list, id_list
 
+
 @app.route('/cart', methods=['GET', 'POST'])
 @login_required
 def cart():
 
-    # creates a cart list and a list of ids in cart using make_list
+    # creates a cart list and a list of ids in cart using make_lists
 
     make_lists_out = make_lists(current_user.cart)
 
@@ -169,11 +170,16 @@ def cart():
 @login_required
 def wishlist():
 
+    # creates a wishlist list and a list of ids in cart using make_lists
+
     make_lists_out = make_lists(current_user.wishlist)
 
     wishlist_list = make_lists_out[0]
     wishlist_id_list = make_lists_out[1]
 
+    # performs the functionality of the remove from wishlist form. It does it in the same was as the cart does but have
+    # to repeat code as does it on different columns
+
     remove_form = removeFormWishlist()
     if remove_form.validate_on_submit():
         remove_item_id = remove_form.item_id_remove.data
@@ -196,31 +202,40 @@ def wishlist():
 
 @app.route('/item', methods=['GET', 'POST'])
 def item_page():
-    id = request.args.get('id', default='1', type=int)
-    all_products = product_table.query.all()
-    for product in all_products:
-        if product.product_id == id:
-            product_in = product
-    cartForm = addToCart()
-    if cartForm.validate_on_submit():
-        for c in db.session.query(User).filter_by(id = current_user.get_id()):
-            if cartForm.choice.data == 'Cart':
-                c.cart = c.cart + str(product_in.product_id) + ' '
-            else:
-                c.wishlist = c.wishlist + str(product_in.product_id) + ' '
-            db.session.commit()
-
-    review_form = reviewForm()
+    # gets the item id of the item that the link to the page gives and if no id is given it makes the id -1 so that it
+    # takes you to item not found page and if you enter an id that is invalid it will throw an error and so will take
+    # you to th except that also takes you to the file not found page
+
+    try:
+        id = request.args.get('id', default='-1', type=int)
+
+        all_products = product_table.query.all()
+        for product in all_products:
+            if product.product_id == id:
+                product_in = product
+        cartForm = addToCart()
+        if cartForm.validate_on_submit():
+            for c in db.session.query(User).filter_by(id = current_user.get_id()):
+                if cartForm.choice.data == 'Cart':
+                    c.cart = c.cart + str(product_in.product_id) + ' '
+                else:
+                    c.wishlist = c.wishlist + str(product_in.product_id) + ' '
+                db.session.commit()
+
+        review_form = reviewForm()
+
+        if review_form.validate_on_submit():
+            review_in = review_form.review.data
+            for c in db.session.query(User).filter_by(id=current_user.get_id()):
+                current_user_username = c.username
+            review_table.new_review(review_in=review_in, product_id_in=product_in.product_id, author_in = current_user_username)
 
-    if review_form.validate_on_submit():
-        review_in = review_form.review.data
-        for c in db.session.query(User).filter_by(id=current_user.get_id()):
-            current_user_username = c.username
-        review_table.new_review(review_in=review_in, product_id_in=product_in.product_id, author_in = current_user_username)
+        reviews = review_table.query.filter_by(product_id=product_in.product_id)
 
-    reviews = review_table.query.filter_by(product_id=product_in.product_id)
+        return render_template('item_page.html', product = product_in, cartForm = cartForm, reviewForm = review_form, reviews = reviews)
 
-    return render_template('item_page.html', product = product_in, cartForm = cartForm, reviewForm = review_form, reviews = reviews)
+    except:
+        return render_template('item_not_found.html')
 
 
 @app.route('/checkout', methods=['GET', 'POST'])
diff --git a/shop/templates/item_not_found.html b/shop/templates/item_not_found.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d112d6ce9ae667c4f27892fb7ddc8c9843ab142
--- /dev/null
+++ b/shop/templates/item_not_found.html
@@ -0,0 +1,21 @@
+{% extends "layout.html" %}
+
+{% block page_content %}
+
+<h1 class = "thank_you_text">Item Not Found</h1>
+
+<footer id="footer">
+    <div class = "footer_logo_left_div">
+        <img class = "footer_logo_left" src = "{{ url_for('static', filename='images/dark_logo.png') }}" alt="logo image"/>
+    </div>
+    <div class = "footer_contact">
+        <p>Contact us:</p>
+        <p>e-mail: mpdrury15@gmail.com</p>
+        <p>telephone: 07874810762</p>
+    </div>
+    <div class = "footer_logo_right_div">
+        <img class = "footer_logo_right" src = "{{ url_for('static', filename='images/footer_mtb.png') }}" alt="mtb image"/>
+    </div>
+</footer>
+
+{% endblock %}