【问题标题】:How to get scrambled image file name from models to views django如何从模型获取打乱的图像文件名到视图 django
【发布时间】:2017-07-29 18:49:49
【问题描述】:

我正在尝试获取将要上传的图像的打乱名称并将其发送到视图。在视图中,我知道如何获取图像的真实名称,但如何从模型中获取打乱的名称?

如果有人知道,我会朝这个方向尝试,希望你能告诉我我的方向是否正确:

opts = UploadImage._meta
    print ([f.name for f in opts.fields])
    print ( [(field.name, getattr(UploadImage,field.name)) for field in UploadImage._meta.fields])
    print (UploadImage._meta.get_field('image'))
    print([f.name for f in opts.many_to_many])

models.py

from django.db import models
import uuid

def scramble_uploaded_filename(instance, filename):
    extension = filename.split(".")[-1]
    return "{}.{}".format(uuid.uuid4(), extension)

def filename(instance, filename):
    return filename

# Create your models here.
class UploadImage(models.Model):
#    print (scramble_uploaded_filename)
    image = models.ImageField("Uploaded image",upload_to=scramble_uploaded_filename)
    img_type = models.IntegerField("Image type")
    created = models.DateTimeField(auto_now_add=True)
    user = models.CharField(default='1',max_length= 100,editable=False)

views.py

import sys,os
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from rest_framework import viewsets
from api.models import UploadImage
from api.serializers import UploadedImageSerializer
from rest_framework import authentication, permissions
from rest_framework.parsers import MultiPartParser,FormParser
import MySQLdb


class FileUploadViewSet(viewsets.ModelViewSet):
    #create queryset view
    permission_classes = (permissions.IsAuthenticated,)
    queryset = UploadImage.objects.filter(id=1,user='auth.User')
    serializer_class = UploadedImageSerializer
    parser_classes = (MultiPartParser, FormParser,)

    #after post action get this
    def perform_create(self, serializer):
        #grab request
        image_name = self.request.data['image']
        username = self.request.user
        #grab scrambled filename

【问题讨论】:

    标签: python django


    【解决方案1】:

    如果这是您要求的原因,则应在模型中进行图像处理。 同样在 fillen 函数中,您可以找到图像的名称。

    将此添加到 model.py

    # Create your models here.
    
    class UploadImage(models.Model):
    #    print (scramble_uploaded_filename)
        image = models.ImageField("Uploaded image",upload_to=scramble_uploaded_filename)
        img_type = models.IntegerField("Image type")
        created = models.DateTimeField(auto_now_add=True)
        user = models.CharField(default='1',max_length= 100,editable=False)
        def filen(self):
            path = self.image.path
            print('image path',path)
            tip = self.captcha_type
            text = **here is your function that returns result of image process**
            return text 
        result = filen
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2021-11-07
      • 2012-12-11
      相关资源
      最近更新 更多