Skip to main content
 首页 » 编程设计

python之如何从模型中获取加扰的图像文件名以查看django

2025年02月15日27rubylouvre

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

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

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]) 

模型.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 

请您参考如下方法:

如果这是您要求的原因,图像处理应该在模型中完成。 同样在 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