Django項(xiàng)目中使用JWT的實(shí)現(xiàn)代碼
1.requiremwnts:
- Django版本:2.2
- python版本:3.6
- djangorestframework版本:3.1
- djangorestframework-jwt版本:1.11
- MySQL版本:5.7
注意:使用Django 2.1以上的版本,MySQL數(shù)據(jù)庫必須在5.5以上的版本。
2.新建項(xiàng)目
1)使用pycharm新建一個(gè)Django項(xiàng)目,我的項(xiàng)目名稱叫:django_jwt
2)使用語句 python manage.py startapp django_restframework_jwt新建一個(gè)名為django_restframework_jwt的app
3)在settings.py加入注冊(cè)代碼:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 新添加 'django_restframework_jwt', 'rest_framework', ]
4)在settings.py中追加配置相關(guān)文件:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated', #必須有
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
)
}
import datetime
JWT_AUTH = {
# 指明token的有效期
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
}
5)settings.py中修改數(shù)據(jù)庫相關(guān)配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 數(shù)據(jù)庫的類別
'NAME': 'test', # 數(shù)據(jù)庫的名字
'HOST': '127.0.0.1', # 數(shù)據(jù)庫的ip
'USER': 'root', # 用戶名
'PASSWORD': '5201314', # 密碼
'PORT': '3307'
}
}
6)在自己的本地?cái)?shù)據(jù)庫中新建一個(gè)叫test的數(shù)據(jù)庫;
7)安裝相關(guān)的依賴包:
pip install djangorestframework-jwt
pip install djangorestframework markdown Django-filter
8)在django_jwt/urls.py配置相關(guān)的路由:
from django.contrib import admin
from django.urls import path, include
from django_restframework_jwt.views import IndexView
urlpatterns = [
path('admin/', admin.site.urls),
path('jwt/', include('django_restframework_jwt.urls')),
path('index/', IndexView.as_view(), name='index'),
]
9)在django_restframework_jwt/views.py寫一個(gè)測(cè)試的視圖:
from django.shortcuts import render, HttpResponse
from rest_framework.views import APIView
class IndexView(APIView):
"""
首頁
"""
def get(self, request):
return HttpResponse('首頁')
10)新建django_restframework_jwt/urls.py文件,修改成下面的代碼:
from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token
app_name = 'jwt'
urlpatterns = [
path('jwt_token_auth/', obtain_jwt_token),
]
11)執(zhí)行下面兩句命令:
python manage.py makemigrations
python manage.py migrate
在數(shù)據(jù)庫中創(chuàng)建相應(yīng)的表。
12)創(chuàng)建一個(gè)超級(jí)用戶,用來測(cè)試token
python manage.py createsuperuser
13)運(yùn)行項(xiàng)目,打開Postman軟件,測(cè)試項(xiàng)目:

第一步測(cè)試成功,能得到token
接著使用token

token值的前面記得要加入JWT,還要加上一個(gè)空格。
能正常進(jìn)入首頁,如果沒有在headers加入token,是不能正常訪問首頁的。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 批量合并多個(gè)txt文件的實(shí)例講解
今天小編就為大家分享一篇Python 批量合并多個(gè)txt文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
conda安裝tensorflow和conda常用命令小結(jié)
這篇文章主要介紹了conda安裝tensorflow和conda常用命令小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Django 實(shí)現(xiàn)外鍵去除自動(dòng)添加的后綴‘_id’
今天小編就為大家分享一篇Django 實(shí)現(xiàn)外鍵去除自動(dòng)添加的后綴‘_id’,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Selenium使用Chrome模擬手機(jī)瀏覽器方法解析
這篇文章主要介紹了Selenium使用Chrome模擬手機(jī)瀏覽器方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Python辦公自動(dòng)化之CSV文件的運(yùn)用和管理
Python辦公?動(dòng)化是利?Python編程語?來創(chuàng)建腳本和程序,以簡化、加速和?動(dòng)化?常辦公任務(wù)和?作流程的過程,本文主要來介紹一下如何利用Python進(jìn)行CSV文件的運(yùn)用和管理,感興趣的可以了解下2023-12-12
解決pyPdf和pyPdf2在合并pdf時(shí)出現(xiàn)異常的問題
這篇文章主要介紹了解決pyPdf和pyPdf2在合并pdf時(shí)出現(xiàn)異常的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04

