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转码问题的解决方法
Oct 07 Python
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
详解python中的 is 操作符
Dec 26 Python
解决python 输出是省略号的问题
Apr 19 Python
python PrettyTable模块的安装与简单应用
Jan 11 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
对python中的装包与解包实例详解
Aug 24 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 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
神族 Protoss 历史背景
2020/03/14 星际争霸
php扩展ZF――Validate扩展
2008/01/10 PHP
解析php中memcache的应用
2013/06/18 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
综治维稳工作承诺书
2014/08/30 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
导游词之临安白水涧
2019/11/05 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS