2016-03-31 18 views
1

Uygulamamda (hibrit) çalışıyorum ve kayıt sayfasında Django Rest Framework ile yapılmış bir API'ye tüm verileri göndermem gerekiyor.Resmi base64 django dayanak çerçevesi içinde kaydet

Sorun şu ki, profil resmini gönderebilmemin tek yolu base64 kodlanmış dizgede. Ama sunucuma jpg olarak görüntüye ihtiyacım var. Bunu herkes bilir mi?

Bu benim API Görünüm geçerli:

class CreateUserView(generics.CreateAPIView): 
    serializer_class = UserSerializer 
    permission_classes = [AllowAny] 
    queryset = User.objects.all().order_by('-date_joined') 
    def post(self, request, *args, **kwargs): 
     error = 0 
     data = request.data 

     try: 
      name = data['name'] 
     except KeyError: 
      name = "" 

     try: 
      last_name = data['last_name'] 
     except KeyError: 
      last_name = "" 

     # IMAGE IN BASE64  
     try: 
      profile_picture = data['profile_picture'] 
     except KeyError: 
      profile_picture = "" 

     try: 
      username = data['username'] 
     except KeyError: 
      username = "" 

     try: 
      created_user = User.objects.create(
       first_name = nombre, 
       last_name = last_name, 
       username = username 
      ) 

      # created_user.set_password(password) 
      created_user.save() 
      token = Token.objects.create(user=created_user) 
     except IntegrityError: 
      error = 1 

     return Response(error) 

Ve bu benim serileştiricisi geçerli:

class UserSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = User 
     fields = ('url', 'username', 'first_name', 'last_name', 'email', 'groups') 

base64 alıp bir jpg oluşturmak için herhangi bir yolu var mı?

+0

Ben yığın sonraki kod ile kendim için çözüm buldu - [http://stackoverflow.com/](http://stackoverflow.com/a/6781529/795622) – mexekanez

+1

KeyError hariç 'try' /' işlevi: '' s biraz overkill vardır. 'Get()' yöntemini kullanabilir ve boş dizgiyi varsayılan değer olarak sağlayabilirsiniz: 'name = data.get ('name', '')'. – BlackJack

+0

Teşekkür etmedim =) –

cevap

2

Sadece base64.decodestring kullanabilirsiniz:

from base64 import decodestring 

fh = open("imageToSave.jpeg", "wb") 
fh.write(str(base64_string).decode('base64')) # or fh.write(decodestring(base64_string)) 
fh.close() 
İlgili konular