How to fetch / retrieve images in django
How to fetch image from database in django?
Note : In django, we also store the path of the image in the database and not only the image name
First we will create a path to call the function and write the code to fetch the image/data. Open the urls.py in the app and add the below code:
path('', views.index, name="/"),
Now create a function index in the views file as shown below.
def index(request):
products = Item.objects.all()
context = {'products':products}
return render(request, 'products/index.html', context)
Create a template to display the images. Here we have index.html as the template and the code will be as given below:
{% extends 'products/layouts/main.html' %}
{% load static %}
{% block content %}
<section class="section">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">
<h1 class="fw-bold">Image CRUD in Django</h1>
</div>
<div class="card-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Descritpion</th>
<th>Price</th>
<th>Image</th>
<th>Image</th>
</tr>
</thead>
<tbody>
{% for p in products %}
<tr>
<td>{{ p.id }} </td>
<td>{{ p.name }} </td>
<td>{{ p.description }} </td>
<td>{{ p.price }} </td>
{% if p.image %}
<td>
<img src="{{ p.image.url }}" alt="" class="prod-size">
</td>
{% else %}
<td>
<img src="{% static 'images/product.png' %}" alt="" class="prod-size">
</td>
{% endif %}
<td>
<a href="#" class="btn btn-success badge">EDIT</a>
<a href="#" class="btn btn-danger badge">Delete</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</section>
{% endblock content %}
{% block scripts %}
{% endblock scripts %}
This will fetch you the images from the database and display it on the index.html file.
Watch the video given above for detailed explaination and video demo.