Logitech 1プロジェクト後期

21138 ワード


最初のプロジェクトが終わりました.私が選んだLogicTexサイトをクローンサイトにするプロジェクトを行いました.
2週間のプロジェクトは、フロントエンドとバックエンドを組み合わせて行われます.

モデリング



モデリングはバックエンド開発者が完了しなければならない最も基本的で最も重要なタスクであり、メインプロジェクトの最初のステップです.
行いました.これはスターバックスのウェブサイトのページをモデリングする方法と同じですが、
この場合、範囲が広く、考えなければならない関係がもっと多いので、考えにくいです.まだモデリングに慣れていませんが、これは重要な仕事なので、2番目のプロジェクトの前に多くの練習が必要になる可能性があります.

models.pyの作成(ユーザーアカウント)

  • に基づいてモデリングされたユーザーアカウントmodels.pyと書きました
    from django.db import models
    
    
    class Account(models.Model):
        email          =   models.EmailField(max_length=50)
        password       =   models.CharField(max_length=100)
        name           =   models.CharField(max_length=50)
        language       =   models.CharField(max_length=50, null=True)
        country        =   models.CharField(max_length=50, null=True)
        birthday       =   models.DateField(null=True)
        phone          =   models.CharField(max_length=20)
        create_at      =   models.DateTimeField(auto_now_add=True,null=True)
        update_at      =   models.DateTimeField(auto_now_add=True,null=True)
    
        class Meta:
            db_table = 'accounts'```
  • 最初のプロジェクトでは、作成したモデルの登録とログインの実装を担当します。pyファイルベースのビュー。pyの作成(トークンの登録、ログイン、暗号化、発行)

    import json
    import bcrypt
    import jwt
    
    from django.views import View
    from django.http  import JsonResponse, HttpResponse
    
    from account.models import Account
    from django.db import IntegrityError
    from my_settings import SECRET, ALGORITHM
    
    
    class  SignUpView(View):
        def post(self, request):
            data = json.loads(request.body)
            try:
                if '@' not in data['email'] or len(data['email']) < 3:
                    return JsonResponse(
    					{"message":"Email_Not_Verified"},
    					status = 400
                    )
             
                elif len(data['password']) < 5:
                    return JsonResponse(
    					{"message":"Password_Not_Verified"},
    					status = 411
                    )
    
                if Account.objects.filter(email = data['email']).exists():
                   return JsonResponse({"message":"ACCOUNT_ALREADY_EXIST"},status=401)
                hashed_password = bcrypt.hashpw(data['password'].encode('utf-8'),bcrypt.gensalt()).decode('utf-8')
                Account(
                    email    = data['email'],
                    password = hashed_password,
                    name     = data['name'],
                ).save()
                return JsonResponse({"message":"SUCCESS"}, status =200)
              
            except IntegrityError:
                return JsonResponse(
    					{"message":"Data_Already_Exists"},
    					status = 409
    				)    
            except KeyError:
                return JsonResponse({'message':"INVALID_KEYS"},status=400) 
               
    
    class SignInView(View):
        def post(self, request):
            data = json.loads(request.body)
            try:
                if '@' not in data['email'] or len(data['email']) < 3:
                    return JsonResponse(
    					{"message":"Email_Not_Verified"},
    					status = 400
                    )
            
                elif len(data['password']) < 5:
                    return JsonResponse(
    					{"message":"Password_Not_Verified"},
    					status = 411
                    )
                if Account.objects.filter(email = data['email']).exists() :
                    account = Account.objects.get(email = data['email'])
                   
                    if bcrypt.checkpw(data['password'].encode('utf-8'), account.password.encode('utf-8')):
                        access_token = jwt.encode({'email' : account.email}, SECRET, algorithm = ALGORITHM)
                        return JsonResponse({"Authorization" : access_token.decode('utf-8')}, status=200)
                    return JsonResponse ({"message":"UNAUTHORIZED"},status=401) # password 에러
                return JsonResponse ({"message":"UNAUTHORIZED"},status=401)  # email 에러
          
            except KeyError:
                return JsonResponse({'message' : "INVALID_KEYS"}, status = 400
                ```
    作成されたビュー
  • .pyに基づいてフロントエンドとサーバ通信を行いました.
  • のフロントに私のIPアドレスとUrlを知らせて、そして方法を通じて通信するかどうかを理解します

    感想


    上のコードの中で1ヶ月ぐらいのPythonと張高を学んで、1つの実際のウェブサイトを創建して、張高がどんな方式であることを発見します
    これは良い実習機会で、実際のウェブサイトと同じように使用することができます.

    残念なことに


    私が選んだプロジェクトでPMの役を演じていますが、私がしなければならないことを処理するのに忙しいです.
    プロジェクトの進捗状況が把握できず、フロントエンドのチームメンバーとうまくコミュニケーションが取れなかったことはチームメンバーに申し訳ありません.
    バックグラウンドでのスクロールやデータベースの構築など、私の実力が不足し、チームメンバーに負担をかけ、私の役割を十分に果たしていないのは残念なプロジェクトで、最後に個人的な理由で最終発表に参加できず、残念な思いを残しました.