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 相关文章推荐
Windows系统下安装Python的SSH模块教程
Feb 05 Python
Python中用Spark模块的使用教程
Apr 13 Python
Python中的zipfile模块使用详解
Jun 25 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
python3去掉string中的标点符号方法
Jan 22 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Django Celery异步任务队列的实现
2019/07/24 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
自动化专业毕业生自荐信
2013/11/01 职场文书
保洁主管岗位职责
2013/11/20 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
学校捐款活动总结
2015/05/09 职场文书