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 open()文件处理使用介绍
Nov 30 Python
python类和函数中使用静态变量的方法
May 09 Python
Python元字符的用法实例解析
Jan 17 Python
python dict 相同key 合并value的实例
Jan 21 Python
实例介绍Python中整型
Feb 11 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
pytorch 输出中间层特征的实例
Aug 17 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
Python 面向对象部分知识点小结
Mar 09 Python
Python基于pyecharts实现关联图绘制
Mar 27 Python
django 链接多个数据库 并使用原生sql实现
Mar 28 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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生成略缩图代码
2012/07/16 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
python求绝对值的三种方法小结
2019/12/04 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
大学生党校培训心得体会
2014/09/11 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript