Passing an integer through the url to make a product page

From TRCCompSci - AQA Computer Science
Revision as of 14:21, 26 September 2019 by Admin (talk | contribs) (views.py)
Jump to: navigation, search

We will make it so the product is passed through the url, and then used to display just that product. So we could use'/product/1' to display the produce with the id number of 1.

urls.py

We need to define a new path in the 'urlpatterns', add the following:

path('product/<int:prodID>/', myapp.views.showproduct, name='showproduct'),

This will create a url for '/product/' and the value you enter, ie '/product/1' will be used as an integer and will be called 'prodID'.

views.py

The path in the 'urls.py' above points to a 'showproduct' method, we will need to create this in the 'views.py'. To pass the url parameter we will need to include it in the arguments:

def showproduct(request, prodID):
    product_info = {
        'products' : Product.objects.filter(pk = prodID),
        'reviews' : Review.objects.filter(product = prodID)
    }
    return render(request, 'MyApp/showproduct.html', product_info)

'prodID' is passed into the procedure by the arguments, and then used to filter the product model by the primary key and then filter the review model by the product field.

template