related_name

2063 ワード

related.name


ドラムにモデルをセットする場合は、Foreignキー、後にrelated_nameキーをセットします.
related nameを設定するのはドラムのORM機能を利用するためです.
class Comment(models.Model):
    User = models.ForeignKey(User, on_delete=models.CASCADE, related_name= comment)
参照する値をrelated nameに書き込む場合はsetを使用する必要はありません.
モデルを作成すると、逆参照になります.
user.comment.all()は、ユーザーのすべてのコメントを取得できます.
related name=userとしてcommentモデルはuserを参照
書き間違えた場合もあります.
このモデルに基づいてではなく、前に使用した変数値に基づいています.
思い出して気持ちがいい

レコーダ

def login_decorator(func):
    def wrapper(self, request, *args, **kwargs):
        try:
            access_token = request.headers.get('Authorization')                   (1)
            payload = jwt.decode(access_token, SECRET_KEY, algorithms=ALGORITHM)  (2)
            user = User.objects.get(id=payload['id'])                          (3)
            request.user = user                                                   (4)

        except jwt.exceptions.DecodeError:                                     
            return JsonResponse({'message' : 'INVALID_TOKEN' }, status=400)

        except Account.DoesNotExist:                                           
            return JsonResponse({'message' : 'INVALID_USER'}, status=400)

        return func(self, request, *args, **kwargs)

    return wrapper
長い間悩んでいたTokenDecoratorです.
1番からコードを順番に見ると.
1.フロントで送信されたタイトルの認証におけるトークン値を取得します.
2.我々がエンコードした秘密鍵とALL値を使用して、インポートしたトークンをjwtに復号する.
3.ユーザのid値と復号化のペイロード値とが同じ値を取得する.(ここのユーザを識別)
4. request.この値をuserに挿入します.
最初は和弦を見て迷いました...1行1行見て、そのまま実行して理解しました.
特にrequestuser=userという部分はよくわかりません
(request.user空間は既に存在し、そこに値を与えると考えられています.)related_name= comment関数を使用してrequestを表示すると、3番目に新しいuserが生成されることが分かった.
ソース
https://velog.io/@devmin/Django-decorator-login-token-basic