DjangoのRESTフレームワークの認定権限と制限

認証、許可と制限

認証は、識別認証情報(例えば、ユーザからの要求、またはトークンの署名)入来要求に関連付けられた機構のセットです。その後、権利と制限は、アセンブリの要求を拒否するかどうかを決定します。

それは単に次のとおりです。

あなたが誰であるかの認定決定

あなたがインターフェイスにアクセスできるかどうかを決定権限が

あなたは、周波数インターフェイスへのアクセスを制限していることを確認します

認証

RESTフレームワークは、箱から出して、いくつかの認証方式を提供し、また、カスタムソリューションを実装することができます。

個人ノックコードログ:

1。

ここにあなたのモデルを作成します。
クラスUserInfo1(models.Model):
    ID = models.AutoField(PRIMARY_KEY =真)は、   エネルギー自給の主キーフィールドを作成
    #はVARCHAR(64)を作成するだけで、空のフィールドではありません 
    (= 20がMAX_LENGTHで、ヌル= Falseの名前= models.CharField 
    PWD = models.CharField(MAX_LENGTH = 32、デフォルト= 123 

クラストークン(models.Model):
    ユーザー = models.OneToOneField(" UserInfo1 "、on_delete = models.CASCADE)
    トークン = models.CharField(MAX_LENGTH = 128)

2。

私は、ランダムな文字列を必要と
DEF (ユーザー)get_random_str:
     輸入hashlib、時間
    CTIME = STR(time.time())
    カプセル化バイトのMD5暗号化対象の一種である 
    MD5 =(バイト(ユーザ、hashlib.md5エンコード= " UTF-8 " ))
     #1 md5.update効果がスプライスされる、ランダムに生成された値MD5 
    MD5 .Update(バイト(CTIME、コード= " UTF-8 " ))
     を返す(md5.hexdigest)


認証、許可と制限
クラスLoginModelView(APIView):
     DEF POST(自己、要求):
        名前 = request.data.get(" 名前" 
        PWD = request.data.get(" PWD " 

        ユーザー = models.UserInfo1.objects.filter(名=名、PWD = PWD)1次回()
        RES = { " STATE_CODE ":1000、" MSGは" :なし}
         IF ユーザー:
             #は暗号化された文字列を返すusermd5 
            random_str = get_random_str(user.name)
             "" "
            トークンがある場合、更新プログラムは、作成し、デフォルトは存在しない。辞書の組成物の(フィールド、値)によって、オブジェクトを更新するために使用されます。 
            これは、(オブジェクトが、作成された)からなるタプルを返します
            対象:あるか、オブジェクトが作成、更新され、
            作成:新しいオブジェクトが作成されるかどうかを示すブール値です。                      
            ""」
            トークン = models.Token.objects.update_or_create(ユーザー=ユーザー、デフォルト= { " トークン" :random_str})
            RES [ " トークン" ] = random_str
         
            RES [ " STATE_CODE " ] = 1001   #のエラーステータスコード 
            RES [ " MSG " ] = " ユーザー名またはパスワードエラー"

        インポートJSON
         json.dumpsが= Falseのensure_asciiを出力を指定する本当の中国の必要性を望んでシリアライズ時に中国のASCIIエンコーディングがデフォルトで使用されているので、これは:です。
        この場合、あなたが代わりにu4e2d \中国のJSON文字列に変わることができるようになります\ u56fd 
        返すレスポンス(json.dumps(RES、ensure_ascii = false)を)

 

ジャンゴupdate_or_create

(デフォルト=なし、kwargsから**) update_or_createの
値が異なるデフォルト値を作成し、その後、同じ更新

Member.objects.update_or_create(デフォルト= { 'ユーザ' :1}、他人= { 'フィールド1':1、 'FIELD2': 1})
ユーザ1 =存在、更新が存在しない、作成した場合

update_or_create用法:

update_or_create(デフォルト=なし、** kwargsから)

kwargsから:オブジェクトを更新するか、新しいオブジェクトを作成します。

デフォルトは:オブジェクトを更新するための辞書の組成物の(フィールド、値)、です。

 

これは、(オブジェクトが、作成された)からなるタプルを返します

対象:あるか、オブジェクトが作成、更新され、

作成:新しいオブジェクトが作成されるかどうかを示すブール値です。

 

update_or_create:分析法kwarg



 

おすすめ

転載: www.cnblogs.com/Rivend/p/11844648.html