Today I Learned|7月29日
今日は何をしましたか。🍑 1
Code Kata day92
Westagram Wrap-up
1. 🍑 Code Kata day9 🍑
👉 リンク
2. 🍑 Westagram Wrap-up 🍑
昨日フロントとヴィスタックのコードを貼る時間がありました.会員入力もログインAPIも確認して、ログインAPIはずっと500個のエラーを表示していますが、これはいったい何の問題がありますか?40分以上悩んだ.今日の会話の授業で説明を聞いて解決した.
問題コード
users/views.pytry :
data = json.loads(request.body)
email = data['email']
password = data['password']
user = User.objects.get(email=email)
if not User.objects.filter(email=email).exists():
return JsonResponse({'message':'INVALID_EMAIL'}, status=401)
これは,ユーザが入力したメールがDBにあるかを確認し,ない場合はエラーメッセージを表示する論理である.DBにない電子メールをサーバに送信すると、
User.DoesNotExist:User matching query does not exist. エラーが発生しました.
旗編では,他の人が作成したコードを確認してもif文existsメソッドを用いたコードは同じであることが分かったが,なぜエラーが発生したのかを考えると,「user」変数の位置を変えると正常に動作する.原因は内線では不明です.^^そして今日の会議でこの説明を聞きました.
user変数は、jsonデータに含まれるemailと一致するemail値を持つオブジェクトを指定します.この変数は、if文でオブジェクトの存在をフィルタしない前に、ユーザに現れない値を割り当てる必要があるからです.DoesNotExistエラーが発生しました.
私から見れば、彼は会議を符号化することを考えている間に、変数を整理しようとしたが、論理順序を破壊した.💩
修正されたコード
try :
data = json.loads(request.body)
email = data['email']
password = data['password']
if not User.objects.filter(email=email).exists():
return JsonResponse({'message':'INVALID_EMAIL'}, status=401)
user = User.objects.get(email=email)
user変数の位置をifゲートの下に移動すると、エラーなく正常に動作します.
その他のTip
try :
data = json.loads(request.body)
email = data['email']
password = data['password']
user = User.objects.get(email=email)
if not User.objects.filter(email=email).exists():
return JsonResponse({'message':'INVALID_EMAIL'}, status=401)
try :
data = json.loads(request.body)
email = data['email']
password = data['password']
if not User.objects.filter(email=email).exists():
return JsonResponse({'message':'INVALID_EMAIL'}, status=401)
user = User.objects.get(email=email)
移行ファイルが異なる場合、githubは共有時に競合
デコレーション完成~!
users/utils.py
import json, jwt
from django.http import JsonResponse
from my_settings import SECRET_KEY
from users.models import User
def login_required(f):
def wrapper(self, request, *ars, *kwargs):
try:
access_token = request.headers['Authorization']
if access_token:
payload = jwt.decode(access_token, SECRET_KEY, algorithms='HS256')
user = User.objects.get(id = payload['id'])
request.user = user.id
return f(self, request, *args, **kwargs)
except jwt.exceptions.DecodeError:
return JsonResponse({'message':'invalid_access_token'}, status=400)
except keyError:
return JsonResponse({'message':'sign_up_first'}, status=400)
return wrapper
このコードを書くのに数日かかります…^^装飾師という概念にも慣れていない.requestメッセージのデータをどのように受信するか、これらの情報をどのように使用するかは、ほとんど無から有まで難しいので、少し難しいですハハ...
tryに書き出されたコードが問題になっているので、いつもエラーが発生します.
だから結論は最初からしっかり書こう.途中で道を間違えると,まちがいがあって探しにくい
(アルゴリズムを書くべきだがアルゴリズムを書いていったい何回読んだのか…)
Reference
この問題について(Today I Learned|7月29日), 我々は、より多くの情報をここで見つけました https://velog.io/@e2joo418/Today-I-Learned-7월-29일テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol