2017-07-29 11 views
2

アップロードされるイメージのスクランブルされた名前を取得してビューに送信しようとしています。ビューではイメージの本名を取得する方法を知っていますが、モデルからスクランブルされた名前を取得するにはどうすればよいですか?モデルからビューにスクランブルされたイメージファイル名を取得する方法django

私は誰かが私はあなたが私に言うことを願って知っていれば、私は正しい方向に行くのですかこの方向で試してみました:

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 

答えて

1

image procそれがあなたが求める理由なら、エッセンシングはモデルで行うべきです。 また、あなたのイメージの名前を見つけることができます。

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 
にこれを追加
関連する問題