Django项目中使用JWT的实现代码
作者:发飙的蜗牛222 发布时间:2023-03-05 09:21:57
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软件,测试项目:
第一步测试成功,能得到token
接着使用token
token值的前面记得要加入JWT,还要加上一个空格。
能正常进入首页,如果没有在headers加入token,是不能正常访问首页的。
来源:https://blog.csdn.net/weixin_42935779/article/details/102883872


猜你喜欢
- 光线追迹得益于计算机的计算的能力,通过追踪具有代表性的光线的传播轨迹,可以更加精确地描述光学系统的性能,光线追迹方法也因此大展其能,诸如Ze
- 在Python中,有许多用于发送HTTP请求的库,其中最受欢迎的是requests、aiohttp和httpx。这三个库的性能和功能各不相同
- 问题:由于自己做项目的时候,需要循环的绘制数据,假设有100个样本,每个样本包含两个坐标点(A, B),我需要对这两个点标上不同的颜色,同时
- scriptlet的使用jsp页面中分三种scriptlet:第一种:<% %> 可以在里面写java的代码。定义java变量以
- 很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可
- MySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)My
- 我们知道django的orm想实现自增,可以直接使用AutoField字段既可以实现,但是这种情况必须要求此字段是主键,但是我们知道主键只能
- 本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件的名称,从另一个文件夹中找到与这一文件夹中文件同名
- 题目描述输入一行或多行字符串密码,验证每行密码是否符合规范,符合提示“OK”,否则“NG”。密码规范为:1.长度超过8位2.包括大小写字母.
- 1、python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量。#!/usr/bin/en
- 上一篇:微软建议的ASP性能优化28条守则(7)技巧 22:尽可能使用 Server.Transfer 代替 Response.Redire
- 先说一下最土的一种方法:Html:<div class="tab-head">
- 判断文件是否存在os.IsExists()函数和os.IsNotExists(),他们的函数的原形是func IsExist(err err
- vue-cli创建项目时由esLint校验导致报错或警告vue-cli创建项目后编写代码控制台一片黄但不影响代码执行但是看着就是很不爽啊到网
- 一、环境介绍Python版本 : Python3.8开发工具 : Pycharm 21第三方库 : requests还会用到的是 Pytho
- 本文转自:https://blog.csdn.net/qq_42730750/article/details/108415551前言 各大
- ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作
- 本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。什么是PyMySQL?PyMySQL是Python3.x版本中用于
- Go语言作为一门开源的编程语言,已经广泛应用于各个领域。作为一门现代化的编程语言,Go语言支持模块化开发,而包和依赖管理是模块化开发的重要组
- 1. 迭代根据记录的前面的元素的位置信息 去访问后续的元素的过程 -遍历 迭代2. 可迭代对象 iterable如何判断可迭代对象的3种方式