Logitech 1プロジェクト後期
21138 ワード
最初のプロジェクトが終わりました.私が選んだLogicTexサイトをクローンサイトにするプロジェクトを行いました.
2週間のプロジェクトは、フロントエンドとバックエンドを組み合わせて行われます.
モデリング
モデリングはバックエンド開発者が完了しなければならない最も基本的で最も重要なタスクであり、メインプロジェクトの最初のステップです.
行いました.これはスターバックスのウェブサイトのページをモデリングする方法と同じですが、
この場合、範囲が広く、考えなければならない関係がもっと多いので、考えにくいです.まだモデリングに慣れていませんが、これは重要な仕事なので、2番目のプロジェクトの前に多くの練習が必要になる可能性があります.
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
```
作成されたビュー感想
上のコードの中で1ヶ月ぐらいのPythonと張高を学んで、1つの実際のウェブサイトを創建して、張高がどんな方式であることを発見します
これは良い実習機会で、実際のウェブサイトと同じように使用することができます.
残念なことに
私が選んだプロジェクトでPMの役を演じていますが、私がしなければならないことを処理するのに忙しいです.
プロジェクトの進捗状況が把握できず、フロントエンドのチームメンバーとうまくコミュニケーションが取れなかったことはチームメンバーに申し訳ありません.
バックグラウンドでのスクロールやデータベースの構築など、私の実力が不足し、チームメンバーに負担をかけ、私の役割を十分に果たしていないのは残念なプロジェクトで、最後に個人的な理由で最終発表に参加できず、残念な思いを残しました.
Reference
この問題について(Logitech 1プロジェクト後期), 我々は、より多くの情報をここで見つけました https://velog.io/@goohyun1990/Logitech1차-프로젝트-후기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol