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 相关文章推荐
python进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
Python调用命令行进度条的方法
May 05 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python pandas常用函数详解
Feb 07 Python
tensorflow实现简单的卷积网络
May 24 Python
python实现两张图片的像素融合
Feb 23 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
Django框架ORM数据库操作实例详解
Nov 07 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
python实现图片九宫格分割的示例
Apr 25 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
session 的生命周期是多长
2006/10/09 PHP
PHP个人网站架设连环讲(二)
2006/10/09 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
python 运算符 供重载参考
2009/06/11 Python
Python高效编程技巧
2013/01/07 Python
python实现自动解数独小程序
2019/01/21 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
应届毕业生求职信
2013/11/30 职场文书
护士毕业生自荐信
2014/02/07 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
白莲教口号
2014/06/18 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
工程安全生产协议书
2014/11/21 职场文书
务虚会发言材料
2014/12/25 职场文书
个人党性分析总结
2015/03/05 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书