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脚本实现代码行数统计代码分享
Mar 10 Python
Python+django实现文件下载
Jan 17 Python
Django URL传递参数的方法总结
Aug 28 Python
Django日志模块logging的配置详解
Feb 14 Python
python取代netcat过程分析
Feb 10 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
Python3实现建造者模式的示例代码
Jun 28 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
浅析Python实现DFA算法
Jun 26 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
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
Document对象内容集合(比较全)
2010/09/06 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
webpack打包js的方法
2018/03/12 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
Vue实现验证码功能
2019/12/03 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
Python callable()函数用法实例分析
2018/03/17 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
如何理解python对象
2020/06/21 Python
python 将Excel转Word的示例
2021/03/02 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
兼职业务员岗位职责
2014/01/01 职场文书
工程承包协议书
2014/04/22 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
师范生见习报告范文
2014/11/03 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技