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实现的检测网站挂马程序
Nov 30 Python
详解python时间模块中的datetime模块
Jan 13 Python
浅析Python编写函数装饰器
Mar 18 Python
对python中的pop函数和append函数详解
May 04 Python
Python API自动化框架总结
Nov 12 Python
Python多线程获取返回值代码实例
Feb 17 Python
python实现将中文日期转换为数字日期
Jul 14 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
python爬虫构建代理ip池抓取数据库的示例代码
Sep 22 Python
Python基于template实现字符串替换
Nov 27 Python
opencv读取视频并保存图像的方法
Jun 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
[03:48]大碗DOTA
2019/07/25 DOTA
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python看某个模块的版本方法
2018/10/16 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
详解Python的循环结构知识点
2019/05/20 Python
如何使用python操作vmware
2019/07/27 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
聊聊python中的循环遍历
2020/09/07 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
计算机网络专业求职信
2014/06/05 职场文书
北京英文导游词
2015/02/12 职场文书
企业战略合作意向书
2015/05/08 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android