Django项目中使用JWT的实现代码


Posted in Python onNovember 04, 2019

1.requiremwnts:

  • Django版本:2.2
  • python版本:3.6
  • djangorestframework版本:3.1
  • djangorestframework-jwt版本:1.11
  • MySQL版本:5.7

注意:使用Django 2.1以上的版本,MySQL数据库必须在5.5以上的版本。

2.新建项目

1)使用pycharm新建一个Django项目,我的项目名称叫:django_jwt

2)使用语句 python manage.py startapp django_restframework_jwt新建一个名为django_restframework_jwt的app

3)在settings.py加入注册代码:

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中追加配置相关文件:

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中修改数据库相关配置:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql', # 数据库的类别
    'NAME': 'test', # 数据库的名字
    'HOST': '127.0.0.1', # 数据库的ip
    'USER': 'root', # 用户名
    'PASSWORD': '5201314', # 密码
    'PORT': '3307'
  }
}

6)在自己的本地数据库中新建一个叫test的数据库;

7)安装相关的依赖包:

pip install djangorestframework-jwt
pip install djangorestframework markdown Django-filter

8)在django_jwt/urls.py配置相关的路由:

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写一个测试的视图:

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)执行下面两句命令:

python manage.py makemigrations
python manage.py migrate

在数据库中创建相应的表。

12)创建一个超级用户,用来测试token

python manage.py createsuperuser

13)运行项目,打开Postman软件,测试项目:

Django项目中使用JWT的实现代码

第一步测试成功,能得到token

接着使用token

Django项目中使用JWT的实现代码

token值的前面记得要加入JWT,还要加上一个空格。

能正常进入首页,如果没有在headers加入token,是不能正常访问首页的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Sanic框架Cookies操作示例
Jul 17 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
python 执行终端/控制台命令的例子
Jul 12 Python
python输出决策树图形的例子
Aug 09 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
Python try except异常捕获机制原理解析
Apr 18 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
python绘制雷达图实例讲解
Jan 03 Python
python爬取抖音视频的实例分析
Jan 19 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 #Python
Python 下载及安装详细步骤
Nov 04 #Python
Django框架表单操作实例分析
Nov 04 #Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 #Python
Django框架模板用法入门教程
Nov 04 #Python
python matplotlib折线图样式实现过程
Nov 04 #Python
Django框架创建项目的方法入门教程
Nov 04 #Python
You might like
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
php命令行用法入门实例教程
2014/10/27 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
JQuery datepicker 使用方法
2011/05/20 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python元组操作实例解析
2014/09/23 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
领导班子整改措施
2014/10/24 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
pytorch实现手写数字图片识别
2021/05/20 Python
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android