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之通过Python连接数据库
Oct 28 Python
Python实现的批量下载RFC文档
Mar 10 Python
python实现字符串和日期相互转换的方法
May 13 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
Python正则表达式完全指南
May 25 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Pyinstaller加密打包应用的示例代码
Jun 11 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
numba提升python运行速度的实例方法
Jan 25 Python
详解Python自动化之文件自动化处理
Jun 21 Python
python字典的元素访问实例详解
Jul 21 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 print EOF实现方法
2009/05/21 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
让Python更加充分的使用Sqlite3
2017/12/11 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python lxml中etree的简单应用
2019/05/10 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
Python logging模块handlers用法详解
2020/08/14 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
ORACLE十问
2015/04/20 面试题
中药专业毕业自荐书范文
2014/02/08 职场文书
文明市民先进事迹
2014/05/15 职场文书
委托证明模板
2014/09/16 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
网络舆情信息简报
2015/07/21 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
创业计划之特色精品店
2019/08/12 职场文书