Bruno Araujo
Bruno Araujo

Reputation: 443

How to save url of the image in database with Django

i am new in Django, how to save url of the image in db using django. Thank you very much, sorry my english, i am learning too.

views.py

from django.shortcuts import render
from django.views.decorators.http import require_POST
from .models import Cad_component
from django import forms
from django.views.decorators.http import require_http_methods

class register_data(forms.ModelForm):
   class Meta:
      model = Cad_component
      fields = ('title','slug','description','start_date','imagviewe')


def home(request):
  imagesData = Cad_component.objects.all()
  template_name = 'index.html'
  context = {
    'imagesData': imagesData
  }
  return render(request, template_name, context)

def register(request):
   if request.method == "POST":
     form = register_data(request.POST)
     print (form)
     if form.is_valid():
        datas = form.save(commit=True)
        #datas.image.save(request.read['title'],request.read['image'])
        datas.save()
   else:
     form = register_data()
     return render(request, 'register.html', {'form': form})

models.py

from django.db import models import datetime

class ComponentManager(models.Manager):

 def search(self, query):
     return self.get_queryset().filter(
         models.Q(name__icontains=query) | \
         models.Q(description__icontains=query)
     )

 class Cad_component(models.Model):
   title = models.CharField('Title', max_length=100)
   slug = models.SlugField('Link')
   description = models.TextField('Description', blank=True)
   start_date = models.DateField('Data: ', null=True, blank=True)
   image = models.ImageField(upload_to='img', verbose_name='Imagem', null=True, blank=True)

created_at = models.DateTimeField('Criado em ', auto_now_add=True)
updated_at = models.DateTimeField('Atualizado em', auto_now=True)

objects = ComponentManager()

def __str__(self):
    return self.title

Upvotes: 0

Views: 2054

Answers (2)

from django.core.files.storage import FileSystemStorage

//inside the view function

myfile = request.FILES['files']
f = FileSystemStorage()
filename = f.save(myfile.name, myfile)
url = f.url(filename)

Now you can store this url. Give an up if it worked... I am new to stackoverflow.

Upvotes: 0

Bruno Araujo
Bruno Araujo

Reputation: 443

I was able to solve this problem, with a configuration that Django does in the HTML file. Just add: enctype = "multipart / form-data" in the FORM tag.

Follow:

<form class="needs-validation" method="post" enctype="multipart/form-data">

Any doubts I am available.

Upvotes: 1

Related Questions