'display images in djangoi template from database in Django3

Here i am using Django 3 and Python 3.7 where i want to display the the signature as image in my html page

Here is my views.py

def jobsignature_view(request, pk):
   job = CreateJob.objects.filter(id=pk)
   job_data={}
   for val in job_id:
      job_data['job_id'] = pk
      job_data['signature'] = val.signature
      ......
      ....

Here is my models.py

 class Cre(models.Model):
      signature = models.TextField(default='', blank=True, null=True)

here in my database it is saving as

  id    signature
  
  1     b'b3V0cHV0'

Here is my template.html

 I confirm that this work has been completed:
<div class="span12">
     {{ form.media }}

     {% if job_data.signature != None and job_data.signature != '' %}
 
      <img src="data:image/png;base64,{{job_data.signature}}"/>
     {% endif %} 
</div>

here is how its is displaying

enter image description here

How can i make my signature display here please help me



Solution 1:[1]

In your life I think for a search on a primary key it is more appropriate to use get(), your primary key is unique, we expect only one object. Filter() is used to return a queryset of otherwise multiple items :

def jobsignature_view(request, pk):

 job = CreateJob.objects.get(id=pk)
 return render(request, 'myapp/yourpage.html', {'job': job})

In the html template :

 {% if job %}
  <img src="{{job.signature}}"/>
 {% endif %}

For the model I think you should use ImageField :

from django.core.files.storage import FileSystemStorage

from django.db import models

fs = FileSystemStorage(location='/media/photos')

class CreateJob(models.Model):

    ...

    signature = models.ImageField(storage=fs)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pierre-Nicolas Schleicher