学习react——django和react的登录,注册

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:46   78   0

自学react,作为一个只有后端python方面知识的人,看过一点点前端教程基础,学习react还是不轻松的。

记过两天的学习,自制一个简单的登录,注册界面,组件的划分用的还不是熟悉。

登录界面:http://localhost:3000/login

注册界面:http://localhost:3000/register

首页的界面:http://localhost:3000/homepage

一共三个界面,前端是用react画的,后端是用django做的登录注册。

django部分的登录注册代码,用的是restframework的模式:

class UserViewset(ModelViewSet):
    '''
    用户类,用于登录注册
    '''
    serializer_class = UserSerializer
    queryset = User.objects.all()

    @action(methods=['POST'], url_path='login', detail=False)
    def login(self, request):
        '''
        登录
        :param request: 用于传参数,必要参数 username:用户名   password:密码
        :return:
        '''
        username = request.data.get('username')
        pwd = request.data.get('password')

        res = {
            'code': 0,
            'msg': '',
            'data': {}
        }
        if not all([username, pwd]):
            res['msg'] = '参数异常。'
            return Response(res)
        print(request.data)
        try:
            user = User.objects.get(username=username, password=pwd)
        except:
            res['msg'] = '用户名或者密码错误,请重新登陆。'
            return Response(res)
        if user.is_active != 1:
            res['msg'] = '用户不可用,请重新登陆。'
            return Response(res)

        login(request, user)
        request.session['login'] = True
        request.session['FS_YWPT'] = True
        request.session.set_expiry(0)
        res['msg'] = '登陆成功'
        res['code'] = 1
        res['data'] = {'username': username}
        return Response(res)

    @action(methods=['POST'], url_path='register', detail=False)
    def register(self, request):
        '''
        注册
        :param request: 用于传参数,必要参数 email:邮箱   password:密码  username:用户名  residence:地区  website:暂时没啥用
        :return:
        '''
        email = request.data.get('email')
        password = request.data.get('password')
        username = request.data.get('username')
        residence = request.data.get('residence')
        website = request.data.get('website')
        res = {
            'code': 0,
            'msg': '',
            'data': {}
        }

        if not all([email, password, username, residence, website]):
            res['msg'] = '参数异常。'
            return Response(res)

        print([email, password, username, residence, website])
        if User.objects.filter(username=username):
            res['msg'] = '用户已存在。'
            return Response(res)

        User.objects.create(password=password, is_superuser=0, username=username, email=email)
        res['code'] = 1
        res['data'] = [email, password, username, residence, website]
        return Response(res)

react部分:

登录界面,用的是ant中的表单组件。

注册界面,用的是ant中的表单组件。

首页,用的是ant中的布局。

还有一些js代码的编写。

详细代码,git地址:https://github.com/SmallRedHXB/loginAndReact.git

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP