認証のDjangoの残りのフレームワーク

まず、ユーザ認証トークンに基づいて、

1、設定

アプリの設定に最初に追加されたrest_framework

INSTALLED_APPS = [
     ' django.contrib.admin ' ' django.contrib.auth ' ' django.contrib.contenttypes ' ' django.contrib.sessions ' ' django.contrib.messages ' ' django.contrib.staticfiles ' ' API ' 、#我自己注册的APP
     ' rest_framework ' 、#添加restframework 
]

 

2、URL

django.conf.urls インポートURL
 から api.apiviewのインポート apiview
urlpatterns = [ 

  URL(R '^(P <バージョン> [V1 |?V2] +)/ login_api / $'、apiview.login_api.as_view())、
]
コードをコピー

3、モデル

預金ユーザーがログオンした後に2つのテーブル1つの格納されているユーザ情報、トークンを作成します。

django.db 輸入モデル

クラス(models.Model)USER_INFO:
  ユーザ名 = models.CharField(= 32 MAX_LENGTH、ユニーク=真、verbose_name = ' 用户名' 
  パスワード = models.CharField(max_lengthを= 32、verbose_name = ' 密码' 
  ニックネーム = models.CharField(MAX_LENGTH = 32、verbose_name = ' 昵称' 

クラスはUserToken(models.Model):
    時間 = models.DateTimeField(auto_now = TRUE)
    ユーザー =へ= models.OneToOneField(' USER_INFO '、on_delete =なし)
    トークン = models.CharField(MAX_LENGTH = 64)

 

4、ビュー

apiview.py

django.shortcuts インポートのHttpResponseを
 から utils.responseの輸入BaseResponse
 から django.db 輸入モデル
 から API 輸入モデルは
 インポートJSON
 インポート

クラスlogin_api(オブジェクト):
     デフポスト(自己、要求、* argsを、** kwargsからの):
        応答 = BaseResponseを()
         してみてください
            ユーザー = request._request.POST.get(' ユーザ名' 
            PWD= request._request.POST.get(' パスワード' 
            OBJ = models.UserInfo.objects.filter(ユーザ名=ユーザー、パスワード= PWD)1次回()
            
            なら ないOBJ:
                response.code = 400000 
                response.error = { 
            'ユーザ名':'用户名或密码错误」

          }
          response.message = '参数错误'
        戻りのHttpResponse(json.dumps(応答__dict__ )) token_obj = トークン() トークン = token_obj.CreateToken(ユーザ) models.UserToken.objects。 update_or_create(ユーザー=ユーザー、デフォルト= { ' トークン':トークン、' 時間' :time.time()}) response.data = { ' トークン' :トークン、 ' ユーザ名' :ユーザー、 ' パスワード' :PWD } 以外Eとして例外: response.error = STR(E) response.code = 400001 response.message = ' 请求异常' リターンHttpResponse(json.dumps(応答。__dict__))

token.py

ウェブインポートモデル
 インポート時間を
 から datetime型のインポート日時
 輸入hashlibの

クラス:トークン(オブジェクト)
     デフCreateToken(自己、ユーザー):
         '' ' 
        创建トークン名+时间戳转换为MD5 
        :のparamユーザー:
        :リターン
        ''' 
        のctime = STR(time.time())
        トークン = hashlib.md5(バイト(ユーザ、コード= ' UTF-8 ' ))
        token.update(バイト(CTIME、コード = ' UTF-8 ' ))
        戻る)(token.hexdigest

response.py

クラスBaseResponse(オブジェクト):
     デフ __init__ (自己):
        self.message = " OK!
        self.data = なし
        self.error = なし
        self.code = 200

 

郵便配達のテストを使用します

ユーザー名とパスワードが正しい場合は、トークンが生成されます、次回のログイン時には、値のトークンが更新されます

 

 

ユーザー名とパスワードのエラーは、例外がスローされた場合

 

おすすめ

転載: www.cnblogs.com/zhw3702/p/12362447.html