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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
浅析Python中的序列化存储的方法
Apr 28 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
python的内存管理和垃圾回收机制详解
May 18 Python
python实现简单成绩录入系统
Sep 19 Python
python numpy存取文件的方式
Apr 01 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
python - asyncio异步编程
Apr 06 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 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 编写大型网站问题集
2010/05/07 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
javascript Keycode对照表
2009/10/24 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
原生js无缝轮播插件使用详解
2020/03/09 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
python自动发微信监控报警
2019/09/06 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
迟到检讨书400字
2014/01/13 职场文书
争论的故事教学反思
2014/02/06 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
网吧消防安全责任书
2014/07/29 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
护士求职简历自我评价
2015/03/10 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书