请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我通过接口创建用户之后,数据库中的密码还是明文的,用户也登录不上,是信号量没有起作用吗,为什么呢?

正在回答 回答被采纳积分+3

5回答

shfscut 2017-11-20 10:35:26

你好!遇到了同样的问题,你解决了吗?

1 回复 有任何疑惑可以回复我~
jager_he 2019-08-05 18:20:04

settings  INSTALLED_APPS = ['user']

修改成

settings  INSTALLED_APPS = ['user.apps.UserConfig']

这样才会加载 def ready(self): 函数   信号量才会生效



0 回复 有任何疑惑可以回复我~
提问者 fbb123456 2017-10-16 15:19:48
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token
from django.contrib.auth import get_user_model

User = get_user_model()

@receiver(post_save, sender=User)
def create_user(sender, instance=None, created=False, **kwargs):
    if created:
        password = instance.password
        instance.set_password(password)
        instance.save()


0 回复 有任何疑惑可以回复我~
提问者 fbb123456 2017-10-16 15:18:56
class UserViewset(mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.UpdateModelMixin,viewsets.GenericViewSet):
    '''
    用户注册
    '''
    queryset = User.objects.all()
    authentication_classes = (authentication.SessionAuthentication,JSONWebTokenAuthentication)
    def get_permissions(self):
        if self.action == "retrieve":
            return [permissions.IsAuthenticated()]
        else:
            return []

    def get_serializer_class(self):
        if self.action == "create":
            return UserRegSerializer
        else:
            return UserDetailSerializer


    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        re_dict = serializer.data
        payload = jwt_payload_handler(user)
        re_dict["token"] = jwt_encode_handler(payload)
        re_dict["name"] = user.name if user.name else user.username

        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

    def get_object(self):
        return self.request.user

    def perform_create(self, serializer):
        return serializer.save()


0 回复 有任何疑惑可以回复我~
慕斯卡0204711 2017-10-13 16:24:38

AppConfig中没有加载singal?

0 回复 有任何疑惑可以回复我~
  • 提问者 fbb123456 #1
    加了啊,你是说这里吧:
    class UsersConfig(AppConfig):
        name = 'users'
        verbose_name = "用户管理"
    
        def ready(self):
            import users.signals
    回复 有任何疑惑可以回复我~ 2017-10-13 21:32:33
  • bobby 回复 提问者 fbb123456 #2
    你贴一下你的signal代码以及你的view里面的添加用户的代码逻辑
    回复 有任何疑惑可以回复我~ 2017-10-16 09:37:19
  • 提问者 fbb123456 回复 bobby #3
    signal:
    from django.db.models.signals import post_save
    from django.dispatch import receiver
    from rest_framework.authtoken.models import Token
    from django.contrib.auth import get_user_model
    
    User = get_user_model()
    
    @receiver(post_save, sender=User)
    def create_user(sender, instance=None, created=False, **kwargs):
        if created:
            password = instance.password
            instance.set_password(password)
            instance.save()
    回复 有任何疑惑可以回复我~ 2017-10-16 15:08:01
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号