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操作 hbase 数据的方法
Dec 18 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
使用python3构建文件传输的方法
Feb 13 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
python框架django项目部署相关知识详解
Nov 04 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python socket处理client连接过程解析
Mar 18 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
Python3如何使用range函数替代xrange函数
Oct 05 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
php的dl函数用法实例
2014/11/06 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
python函数局部变量用法实例分析
2015/08/04 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
基于python中__add__函数的用法
2019/11/25 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
配件采购员岗位职责
2013/12/03 职场文书
医学求职自荐信
2014/06/21 职场文书
信仰纪录片观后感
2015/06/08 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS
golang生成并解析JSON
2022/04/14 Golang