Как просматривать изображения, когда путь сохранен в базу данных, а изображение сохранено в папку в Django?

#django

#django

Вопрос:

Я новичок в Django. Мне нужна помощь. Я хочу отображать изображения. Здесь я сохранил путь к изображению в базу данных и изображения в папку. Пожалуйста, помогите мне отобразить эти изображения.

views.py:

 def uploadfile(request):
   print('inside upload logic')
   if request.method == 'POST':
      form = FileUploadForm(request.POST, request.FILES)
      if form.is_valid():
        # ImageUpload(request.FILES['File_Name'])  
         myfile = request.FILES['File_Name']

         fs = FileSystemStorage()
         filename = fs.save(myfile.name, myfile)
         uploaded_file_url = fs.url(filename)
         newdoc = FileUpload(File_Name=myfile.name, File_path=uploaded_file_url,  Description=request.POST['Description'])
         newdoc.save()
         #return HttpResponse("File uploaded successfuly")  
         return render(request, 'Login/fileupload.html')   
   else:
      form = FileUploadForm()
      return render(request, 'Login/fileupload.html', {
      'form': form
   }) 

def dataretrive(request):
   newdoc=FileUpload.objects.all()
   return render(request,'Login/displayimage.html',{'FileUpload':FileUpload})      
  

МОЯ модель:

  class FileUpload(models.Model):
    File_Name = models.CharField(max_length=255, blank=True)
    File_path = models.FileField(upload_to='')
    Description = models.CharField(max_length=255, blank=True)
    Upload_Date = models.DateTimeField(auto_now_add=True)
  

Комментарии:

1. можете ли вы опубликовать свою модель здесь?

2. класс FileUpload (модели. Модель): Имя_фАйла = модели. CharField(max_length = 255, blank = True) File_path = модели. Поле файла (upload_to=») Описание = модели. CharField(max_length = 255, blank = True) Upload_Date = модели. DateTimeField(auto_now_add=True)

3. пожалуйста, обновите свой вопрос и добавьте туда эту модель

4. и где вы хотите отобразить эти изображения в шаблонах Django?

5. просто получите доступ к url свойству этого FileField подобного File_path.Url , отправляете ли вы его в JSON или используете в шаблонах напрямую

Ответ №1:

Проверьте это

Добавьте это в свою модель:

  class FileUpload(models.Model):
    File_Name = models.CharField(max_length=255, blank=True)
    File_path = models.FileField(upload_to='')
    Description = models.CharField(max_length=255, blank=True)
    Image = models.ImageField(upload_to=upload_location)
    Upload_Date = models.DateTimeField(auto_now_add=True)

def upload_location(instance, filename):
    filebase, extension = filename.split(".")
    return "%s/%s" % (instance.id, filename)
  

В вас settings.py в файле обязательно укажите MEDIA_URL и MEDIA_ROOT:

 MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  

Для доступа к MEDIA_URL в шаблоне вы должны добавить django.template.context_processors.media в ваши context_processeors внутри конфигурации ШАБЛОНОВ.

Добавьте это в свой шаблон:

 {% if instance.image %}
  <img src="{{ instance.image.url }}" class='img-responsive' />
{% endif %}
  

Комментарии:

1. File_path уже есть, FileField зачем ему поле изображения, FileField отлично работает и для изображений

2. @Aarif вы правы, конечно, это не так, но это не считается лучшей практикой.