国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django rest framework工具包簡單用法示例

2020-02-15 22:28:45
字體:
來源:轉載
供稿:網友

本文實例講述了Django rest framework工具包簡單用法。分享給大家供大家參考,具體如下:

Django rest framework 工具包做API非常方便。

下面簡單說一下幾個功能的實現方法。

實現功能為,匿名用戶訪問首頁一分鐘能訪問3次,登錄用戶一分鐘訪問6次,只有登錄用戶才能訪問order頁面。

第一步,注冊app

INSTALLED_APPS = [  'django.contrib.admin',  'django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.messages',  'django.contrib.staticfiles',  'app.apps.AppConfig',  'rest_framework', #注冊]

settings文件注冊app

第二步,定義URL,注意url路徑最好使用名詞。我們這里注冊三個視圖函數的url,實現驗證,首頁和定單頁面。

from django.conf.urls import urlfrom django.contrib import adminfrom app import viewsurlpatterns = [  url(r'^admin/', admin.site.urls),  url(r'^auth/', views.AuthView.as_view()), #驗證  url(r'^index/', views.IndexView.as_view()), #首頁  url(r'^order/', views.OrderView.as_view()), #定單]

url文件設置路由

第三步,auth視圖函數

from rest_framework.views import APIViewfrom rest_framework.request import Requestfrom django.http import JsonResponse,HttpResponsefrom app.utils.commons import gen_tokenfrom app.utils.auth import LuffyAuthenticationfrom app.utils.throttle import LuffyAnonRateThrottle,LuffyUserRateThrottlefrom app.utils.permission import LuffyPermissionfrom . import modelsclass AuthView(APIView):  """  認證相關視圖  由于繼承了APIView,所以csrf就沒有了,具體的源代碼只是有一個裝飾器,  加上了csrf_exempt裝飾器,屏蔽了csrf  寫法是在return的時候csrf_exempt(view) 和@使用裝飾器效果是一樣的,這種寫法還可以寫在url路由中。  """  def post(self,request,*args,**kwargs):    """    用戶登錄功能    :param request:    :param args:    :param kwargs:    :return:    """    ret = {'code': 1000, 'msg': None}    # 默認要返回的信息    user = request.data.get('username')    # 這里的request已經不是原來的request了    pwd = request.data.get('password')    user_obj = models.UserInfo.objects.filter(user=user, pwd=pwd).first()    if user_obj:      tk = gen_token(user) #返回一個哈希過得字符串      #進行token驗證      models.Token.objects.update_or_create(user=user_obj, defaults={'token': tk})      # 數據庫存入一個token信息      ret['code'] = 1001      ret['token'] = tk    else:      ret['msg'] = "用戶名或密碼錯誤"    return JsonResponse(ret)

上面的代碼主要是實現了一個驗證的功能,通過gen_token函數來驗證,并存入數據庫信息。

gen_token單獨寫到一個utils目錄下的auth.py文件中。代碼如下:

def gen_token(username):  import time  import hashlib  ctime = str(time.time())  hash = hashlib.md5(username.encode('utf-8'))  hash.update(ctime.encode('utf-8'))  return hash.hexdigest()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 察雅县| 炉霍县| 天祝| 云安县| 固安县| 东山县| 荣昌县| 丹阳市| 同德县| 茌平县| 都江堰市| 凉城县| 云阳县| 佛教| 包头市| 北辰区| 乌兰县| 宁明县| 山丹县| 犍为县| 上杭县| 门源| 丰县| 千阳县| 西平县| 昭苏县| 平原县| 石嘴山市| 云梦县| 广昌县| 和平县| 水城县| 湖南省| 广东省| 周口市| 夏邑县| 进贤县| 汉中市| 伊吾县| 榆中县| 永和县|