21.3.8
Westagram with Django 5日目
メンターのコメントを一つ一つ修正し、コードの整理と認証時間を再復習+Mission 7 Follow
1.コメント内容
可読性のための論理分割2回のフィードバック
(会員入学試験)パスワードは重複できます.高炉論理からコードを減算
良い点:暗号化プロセス(しかし、まだ理解していないところがたくさんあるので、他の人のコードを見ると、私とは違うものがたくさんあります.私は理解していません.勉強を続けます.)
createの後はsave()は必要ありません.
get()で電子メールをインポートする方法を使用して、取得する必要がある例外を検索します.
try:
user = User.objects.get(email=data['email'])
except User.DoesNotExist:
return JsonResponse({"message":"USER_DOES_NOT_EXIST"}, status=400)
if bcrypt.checkpw(data['password'].encode('utf-8'), user.password.encode('utf-8')):
token = jwt.encode({'email' : data['email']}, SECRET_KEY, algorithm="HS256")
return JsonResponse({'token' : token, "message":"SUCCESS"}, status=200)
コインを作成して発送する過程を確認する必要があるかもしれません.でもこれは正解じゃないみたいだから考えてみよう不要なelse文の削除:戻り値をifに調整するときのインデント
その他の変更:
ハッシュ中は最後に復号せずに終了したが,後でデータベースをプッシュして再ログインするとログインに失敗する現象が見られた.必ず復号で閉じます.
2. Mission7
結果を
長いハウジングの使用方法を再熟知します(データベースが消耗した後に会員帳のアウトドアを作成する以外は、ハウジングで作成されています).
複数:すべての関連資料を再検索
ブログの整理:セルフリファレンス.複数:複数のコンテンツを整理
ブログを整理する:友達同士は自動的に友達(True)で、相手に注目しないわけにはいかない.
ドラム公式ドキュメント部分
ヒント:Self Reference Model
from django.db import models
class User(models.Model):
email = models.EmailField(max_length=50, unique=True)
password = models.CharField(max_length=100)
relation = models.ManyToManyField('self', through='Follow', symmetrical=False)
# follow는 유저간 관계라서 변수명 지음
# self : 스스로 참조한다.
# through : Follow 클래스로
'''ymmetrical=False / 기본은 True, 친구로 예를 들면 두 참조가 친구면 서로 친구. 근데 False 값을 써줘야 하는 이유는 기본적으로 인스타는 맞팔이 아니기 때문. 누군가 팔로우를 해도 누군가는 팔로 안 할 수도 있으니까.'''
class Meta:
db_table = "users"
class Follow(models.Model):
following = models.ForeignKey(User, on_delete = models.SET_NULL, null=True, related_name = "following")
follower = models.ForeignKey(User, on_delete = models.SET_NULL, null=True, related_name = "follower")
# 다음은 팔로잉, 팔로어를 외래키로 모델링. 값은 NULL로 하고 관계된 이름을 정해준다.
# 여기서 이름이 정확히 정해지지 않으면 참조가 원활히 이뤄지지 않는다.
class Meta:
db_table = "follows"
>>> from account.models import Follow
>>> Follow.objects.create(following=u1, follower=u2)
<Follow: Follow object (1)>
# 정확히 객체가 하나 생성되었다.
JangGoShellを使用すると、ビューの作成が容易になります.
views.py
class FollowView(View):
def post(self, request):
data = json.loads(request.body)
following = User.objects.get(email=data['following'])
follower = User.objects.get(email=data['follower'])
# 항상 데이터를 어디서 가져와야하는지 헷갈렸는데 장고쉘을 해본 덕에 금방 왜 그렇게 되는지 이해가 되었다.
if following == follower:
return JsonResponse({"message":"SAME_PERSON!"})
# 자신이 자신을 팔로하지 못 하므로 예외를 둔다.
follow = Follow.objects.create(
following = following,
follower = follower
)
return JsonResponse({"message": "SUCCESS"}, status=200)
このようにして、微信タスク7の注目機能が完成した.長い間悩んでいましたが、特別なことはなかったとも言えますが、私にとってはとても嬉しい一章でした.Reference
この問題について(21.3.8), 我々は、より多くの情報をここで見つけました https://velog.io/@sinichy7/21.3.8위스타テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol