【问题标题】:How to save url of the image in database with Django如何使用 Django 将图像的 url 保存在数据库中
【发布时间】:2018-02-08 12:24:49
【问题描述】:

我是 Django 新手,如何使用 django 将图像的 url 保存在 db 中。非常感谢,对不起我的英语,我也在学习。

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

从 django.db 导入模型 导入日期时间

类 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

【问题讨论】:

  • Django 已经存储了 ImageField/FileField 的 url 值。您可以查看详情here。可以通过:cad_component_object.image.url

标签: django database image url


【解决方案1】:

我能够通过 Django 在 HTML 文件中进行的配置来解决这个问题。只需在 FORM 标签中添加:enctype = "multipart / form-data"。

关注:

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

我有任何疑问。

【讨论】:

    【解决方案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)
    

    现在您可以存储此网址。 如果它有效,请放弃......我是stackoverflow的新手。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      相关资源
      最近更新 更多