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中的线程同步方法
Jun 14 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
Python可变参数用法实例分析
Apr 02 Python
python中的tcp示例详解
Dec 09 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
python模拟斗地主发牌
Apr 22 Python
什么是Python变量作用域
Jun 03 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
python3实现飞机大战
Nov 29 Python
golang中的空接口使用详解
Mar 30 Python
C站最全Python标准库总结,你想要的都在这里
Jul 03 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
phpmyadmin的#1251问题
2006/11/25 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python作用域用法实例详解
2016/03/15 Python
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
Django web框架使用url path name详解
2019/04/29 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
竟聘演讲稿范文
2013/12/31 职场文书
会计岗位职责范本
2014/03/07 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
药学职务聘任书
2014/03/29 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
中小学生学籍证明
2014/10/25 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书