rest_framework10:base64补充/修改头像
生活随笔
收集整理的這篇文章主要介紹了
rest_framework10:base64补充/修改头像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
base64補充
# base64 變長,可反解 # md5 固定長度,不可反解# base64 編碼和解碼 import base64 import json dic={'name':'test','age':18} dic_str=json.dumps(dic)ret=base64.b64encode(dic_str.encode('utf-8')) print(ret)# 解碼 ret2=base64.b64decode(ret) print(ret2)修改頭像
1.使用不同序列化對象更新。
2.使用自動分發路由,不用修改路由。
ser.py
from rest_framework import serializers from api import models from rest_framework.exceptions import ValidationError class UserModelSerializer(serializers.ModelSerializer):# 因為在orm表中沒用re_password=serializers.CharField(max_length=16,min_length=4,required=True,write_only=True)class Meta:model=models.Userfields=['username','password','mobile','re_password','icon']extra_kwargs={'username':{'max_length':16},'password':{'write_only':True}}def validate_mobile(self, data):if not len(data)==11:raise ValidationError('手機號不合法')return datadef validate(self,attrs):if not attrs.get('password') == attrs.get('re_password'):raise ValidationError('兩次密碼不一致')attrs.pop('re_password') # 剔除,因為數據庫里沒有這個re_password字段return attrsdef create(self, validated_data):# attrs.pop('re_password') # 如果上面沒有,這里處理# models.User.objects.create(**validated_data) 這個密碼不會加密user=models.User.objects.create_user(**validated_data)return userclass UserReadOnlyModelSerializer(serializers.ModelSerializer):class Meta:model=models.Userfields=['username','icon']class UserImgModelSerializer(serializers.ModelSerializer):class Meta:model=models.Userfields=['icon']views.py
from rest_framework.viewsets import GenericViewSet from rest_framework.mixins import CreateModelMixin,UpdateModelMixin from api import models class RegisterView(GenericViewSet,CreateModelMixin,UpdateModelMixin):queryset = models.User.objects.all()serializer_class = ser.UserModelSerializerdef get_serializer_class(self):print(self.action)if self.action=='create':return ser.UserModelSerializerelif self.action=='retrieve':return ser.UserReadOnlyModelSerializerelif self.action=='update':return ser.UserImgModelSerializerapi/urls.py
from rest_framework.routers import SimpleRouter from api import viewsrouter=SimpleRouter() router.register('register',views.RegisterView,'register')urlpatterns = [# path('register/', views.RegisterView.as_view({'post':'creat'})),# path('',include(router.urls)) # 第二種方式 ]urlpatterns+=router.urls # 第一種方式總結
以上是生活随笔為你收集整理的rest_framework10:base64补充/修改头像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rest_framework09:自动生
- 下一篇: rest_framework11:jwt