首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django + django-rest-framework-simplejwt保护视图

Django是一个基于Python的开源Web应用框架,它使用了MTV(Model-Template-View)的设计模式,旨在提供高效、灵活且安全的Web应用程序开发。django-rest-framework-simplejwt是Django的一个插件,提供了使用JSON Web Tokens(JWT)进行身份验证和访问控制的功能。

使用Django + django-rest-framework-simplejwt可以实现视图的保护,确保只有经过身份验证的用户可以访问特定的API端点或网页。

首先,我们需要安装Django和django-rest-framework-simplejwt。可以通过以下命令在终端中安装:

代码语言:txt
复制
pip install django
pip install djangorestframework
pip install djangorestframework-simplejwt

接下来,在Django的项目中进行配置。首先,在项目的settings.py文件中,添加以下应用程序和中间件:

代码语言:txt
复制
INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework_simplejwt',
]

MIDDLEWARE = [
    ...
    'django.middleware.security.SecurityMiddleware',
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    ...
]

然后,在settings.py文件中,添加JWT的配置项:

代码语言:txt
复制
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

接着,在urls.py文件中配置路由和视图的保护:

代码语言:txt
复制
from django.urls import path
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)
from .views import ProtectedView

urlpatterns = [
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('api/protected/', ProtectedView.as_view(), name='protected_view'),
]

在上面的示例中,我们定义了三个路由,分别用于获取访问令牌(TokenObtainPairView)、刷新访问令牌(TokenRefreshView)和保护的视图(ProtectedView)。

最后,我们需要定义ProtectedView的实现,用于保护需要身份验证的视图。可以通过继承APIView类来创建视图,并使用@api_view装饰器来确保只有经过身份验证的用户可以访问:

代码语言:txt
复制
from rest_framework.views import APIView
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated

@api_view(['GET'])
def ProtectedView(request):
    content = {'message': '这是一个受保护的视图,只有经过身份验证的用户才能访问!'}
    return Response(content)

在上述示例中,我们创建了一个ProtectedView视图,该视图只允许GET请求,并使用@api_view装饰器确保只有经过身份验证的用户可以访问。

通过以上配置,当用户访问/api/token/端点并提供有效的用户名和密码时,将返回一个访问令牌。用户可以使用此令牌来访问/api/protected/端点并获取受保护的资源。

推荐的腾讯云产品:

  • 云服务器CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储COS:https://cloud.tencent.com/product/cos
  • 腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb
  • 腾讯云网络通信:https://cloud.tencent.com/product/vpc
  • 腾讯云安全加速CDS:https://cloud.tencent.com/product/cds
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iot
  • 腾讯云移动推送:https://cloud.tencent.com/product/tpns
  • 腾讯云分布式文件存储CFS:https://cloud.tencent.com/product/cfs
  • 腾讯云区块链:https://cloud.tencent.com/product/tbaas
  • 腾讯云游戏多媒体引擎GME:https://cloud.tencent.com/product/gme
  • 腾讯云视频处理:https://cloud.tencent.com/product/vod
  • 腾讯云直播:https://cloud.tencent.com/product/lvb
  • 腾讯云元宇宙:https://cloud.tencent.com/product/tci
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django(75)django-rest-framework-simplejwt「建议收藏」

前言 由于之前我们一直使用的django-rest-framework-jwt 这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-rest-framework-simplejwt...介绍 Simple JWT为Django REST Framework提供了JSON Web TOKEN身份验证。...并且借鉴了DRF中的另一个JSON web token库和django-rest-framework-jwt 安装 1.使用以下pip命令安装 pip install djangorestframework-simplejwt...'rest_framework_simplejwt.authentication.JWTAuthentication', ) ... } 3.我们在根urls.py中配置路由视图TokenObtainPairView...就需要传入refresh字段,重新刷新token,访问http://127.0.0.1:8000/api/token/refresh/ 配置信息解释 在settings.py中可以配置一些默认的信息 # Django

1.8K40

Django视图

一、URLconf 用户通过在浏览器的地址栏中输入网址请求网站,对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的。...内置错误视图 Django内置处理HTTP错误的视图,主要错误及视图包括: 404错误:page not found视图 500错误:server error视图 如果想看到错误视图而不是调试信息,需要修改项目的...视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API。 属性 下面除非特别说明,属性都是只读的。...上去 四、HttpResponse对象 视图在接收请求并处理后,必须返回HttpResponse对象或子对象。在django.http模块中定义了HttpResponse对象的API。...重定向简写函数redirect 在django.shortcuts模块中为重定向类提供了简写函数redirect。 1)修改booktest/views.py文件中red1视图,代码如下: ? ?

4.5K20
  • Django 视图函数

    定义视图 本质就是一个函数 视图的参数 一个HttpRequest实例 通过正则表达式组获取的位置参数 通过正则表达式组获得的关键字参数 在应用目录下默认有views.py文件,一般视图都定义在这个文件中...如果处理功能过多,可以将函数定义到不同的py文件中 新建views1.py #coding:utf-8 from django.http import HttpResponse def index(request...Django原生自带几个默认视图用于处理HTTP错误 404 (page not found) 视图 defaults.page_not_found(request, template_name='404....html') 默认的404视图将传递一个变量给模板:request_path,它是导致错误的URL 如果Django在检测URLconf中的每个正则表达式后没有找到匹配的内容也将调用404视图 如果在...defaults.server_error(request, template_name='500.html') 在视图代码中出现运行时错误 默认的500视图不会传递变量给500.html模板 如果在

    57420

    Django视图views

    本文简介 点赞 + 关注 + 收藏 = 学会了 上一篇 《『Django』路由urls》 中介绍了 Django 路由的用法,当时提到路由和视图其实是密不可分的合作伙伴。...这个厨师就是本文要介绍的『视图』。 什么是视图? 在 Django 中,视图的全称应该叫『视图函数』,简称视图(Views)。...在 Django 中,主要有两种类型的视图: FBV:基于函数的视图 CBV:基于类的视图 FBV(Function-Based Views)和CBV(Class-Based Views)是两种处理视图的方式...在 Django 中,当你使用类视图时,需要调用 as_view() 方法来将类视图转换为可调用的视图函数。...这是因为 Django 的 URL 路由系统需要将视图映射到 URL 模式,而类视图本身只是Python 类,无法直接作为视图函数使用。

    9810

    Django 2.1.7 视图

    上一篇中讲诉了Django关于模型的设计以及数据操作,本篇章就来继续讲解关于模板的内容。...参考文献 Django 2.1 官网文档 视图 现在让我们向 assetinfo/views.py 里添加更多视图。那么增加什么类型的视图呢?...根据之前篇章创建的服务器-中间件信息表,那么可以根据视图查询数据,然后返回到页面之中。 那么先来定义一下下面做哪些查询视图页面: 查询某个服务器的详情信息 /getServerinfoDetail?...那么写好了视图之后,下一步就是编写配置url的访问路径,以及参数的获取了。...的传参方式 采用path()即可实现,首先看看原来的入口urls配置,如下: from django.contrib import admin from django.urls import include

    73920

    Django 代码保护

    常用的代码保护不外乎下面几种方法: 发行 .pyc 文件 代码混淆 使用 py2exe 使用 Cython django发布的需要以服务运行,通过其他的几种方法来实现保护,都不太现实。...☆文章版权声明☆ * 网站名称:obaby@mars * 网址:https://h4ck.org.cn/ * 本文标题: 《Django 代码保护》 * 本文链接:https://h4ck.org.cn.../2022/08/django-%e4%bb%a3%e7%a0%81%e4%bf%9d%e6%8a%a4/ * 转载文章请标明文章来源,原文标题以及原文链接。...uwsgi No module named ‘djangoDjango REST framework foreignkey 序列化 Django APScheduler + uwsgi 定时任务重复运行...django 主动抛出 403 异常 再谈《Django 限制访问频率》 ngix+uwsgi+django 以及阿里云rds数据库数据导入 Django input value值被截断 Django

    1.1K20

    Django 教程 --- Django中的视图

    Django视图Django M V T结构的重要参与者之一。视图是用户界面,即您呈现网站时在浏览器中看到的内容。它由HTML / CSS / Javascript和Jinja文件表示。...Django查看范例 使用示例说明如何创建和使用Django视图。...要检查如何使用Django的MVT(模型,视图,模板)结构制作基本项目,请访问创建项目Django视图类型 Django视图分为两大类: 基于功能的视图 基于类的视图 ?...Django CRUD(创建,检索,更新,删除)基于功能的视图:- 创建视图–基于函数的视图Django 细节视图–基于函数的视图Django 更新视图–基于函数的视图Django 删除视图–基于函数的视图...Django 基于类的视图 基于类的视图提供了一种将视图实现为Python对象而非函数的替代方法。

    3K30

    Django视图

    一、视图函数   一个视图函数,简称视图,是一个简单的python函数,接收web请求并返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误等。...在函数中必须写一个request的参数,然后必须要有返回值,中间的逻辑随便,整个函数写在哪里也无所谓,只要python目录下就行,但我们默认规定,视图函数一般都写在每个应用下面views.py文件里。...下面是一个返回当前时间的视图函数 from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect import...New in Django 1.8: 新增 AnonymousUser.get_username() 以更好地模拟 django.contrib.auth.models.User。...') 装饰你的视图以让响应能够正确地缓存。

    1.7K10

    django 入门:通用视图类重构视图

    作者:Kuky_xs 博客:https://www.jianshu.com/p/8cdf099e974f 1 正文 《django入门:环境及项目搭建》 《django入门:数据模型》 《django入门...:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图...1.创建视图类 import markdown from django.shortcuts import render from django.views.generic import ListView...详情界面 有时候如果我们的数据过多,同一页加载全部数据,用户的体验肯定不好,我们通过通用视图类来创建分页,这边为了方便显示,我们会设置每页加载一篇文章 3 通过 ListView 创建分页 1.指定...优化分页列表 最后我们列下 Paginator 常用属性结束 django 的入门教程,接下来会有 DRF 的入门教程,django 算是其基础吧,DRF 实现了前后端分离,刚好适合我这种 Android

    88720

    Python Django 编程 | 连载 03 - Django 视图

    一、初识 Django 中的视图函数 应用中的 views.py 是 Django MTV 架构中的 V,主要负责处理用户请求和生成相应的响应内容返回到前端,然后在 HTML 或者其他类型文档中渲染、显示...视图的细节 视图的组成 一个视图函数可以看作由三个部分组成, 用户的请求 request 对用户请求的逻辑处理 handler 将处理后的数据批量返回给用户的响应 response 用户的请求 request...浏览器向服务发送的请求在 Django 中是一个 request 对象,该兑现更包含了用户的信息、请求内容和请求方法,且视图函数中必须要包含一个实例化的 request 对象作为视图函数的参数,否则会报错...Django 中的视图Django 中支持视图类写法,视图类要继承 View 类,并通过定义 get 方法和 post 方法来处理前端发来的 GET 请求和 POST 请求,而不用向视图函数那样要先通过...在 quebec 应用下的 urls.py 中定义视图类的路由。

    65520

    Django学习视图(6)

    我们在浏览器请求后,Django 匹配URL 进行路由,匹配到后调用对应的视图,生成HTML代码,返回给浏览器。 昨天我们完成了 路由的设置,最后视图的部分没有说明!...Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」。 比如,在一个博客应用中,你可能会创建如下几个视图: 博客首页——展示最近的几项内容。 内容“详情”页——详细展示某项内容。...在 Django 中,网页和其他内容都是从视图派生而来。每一个视图表现为一个简单的 Python 函数(或者说方法,如果是在基于类的视图里的话)。...Django 将会根据用户请求的 URL 来选择使用哪个视图(更准确的说,是根据 URL 中域名之后的部分)。...就是说我们访问 127.0.0.1:8000/polls/ Django就截取了 /polls 这部分 并且调用了对应的视图 我们的视图做了什么呢?

    77340

    Django视图

    欢迎阅读本专栏其他文章 Django 之路由篇 Django 之 Models(Models 模型 & 数据表关系) Django 之模板篇 views...视图 视图概述 视图视图函数,接收web请求并返回web响应的事务处理函数 响应指符合http协议要求的任何内容,包括json,string,html等 本章忽略事务处理,重点在如何处理返回结果上...其他简单视图 django.http 给我们提供了很多和HttpResponse类似的简单视图,通过查看django.http 代码我们知道 此类视图使用方法基本类似,可以通过return语句作为直接反馈返回给浏览器...实验目的 利用django快捷函数手动编写视图处理函数 编写过程中理解视图运行原理 分析 django把所有请求信息封装入request django通过urls模块把相应请求跟事件处理函数连接起来,...- defaults.bad_request(request, template_name='400.html') - DEBUG=False 基于类的视图 简单说一下基于类的视图 和基于函数的视图的优势和区别

    1.1K87

    Django 2.1.7 类视图

    相关篇章 Django 2.1.7 创建应用模板 Django 2.1.7 配置公共静态文件、公共模板路径 Django 2.1.7 模板语言 - 变量、标签、过滤器、自定义过滤器、模板注释 Django...2.1.7 模板继承 Django 2.1.7 模板 - HTML转义 Django 2.1.7 模板 - CSRF 跨站请求伪造 Django 2.1.7 模板 - 图片验证码的实现 Django...需求问题 让我们带着问题来思考并熟悉一下这个类视图。...这样的写法结构比较麻烦,下面来改写使用类视图的方式来处理。 改为类视图 1) 修改test_method_handle方法为类方法。...可以从结果来看到,导入from django.views.generic import View的类视图之后,就可以直接编写不同的方法来处理不同的业务。 查看View类视图源码 ?

    68820

    Django 博客首页视图

    Hello 视图函数 我们先以一个最简单的 Hello World 为例来看看 Django 处理上述问题的机制是怎么样的。...绑定 URL 与视图函数 首先 Django 需要知道当用户访问不同的网址时,应该如何处理这些不同的网址(即所说的路由)。...Django 的做法是把不同的网址对应的处理函数写在一个 urls.py 文件里,当用户访问某个网址时,Django 就去会这个文件里找,如果找到这个网址,就会调用和它绑定在一起的处理函数(叫做视图函数...编写视图函数 第二步就是要实际编写我们的 views.index 视图函数了,按照惯例视图函数定义在 views.py 文件里: blog/views.py from django.http import...使用 Django 模板系统 这基本上就上 Django 的开发流程了,写好处理 HTTP 请求和返回 HTTP 响应的视图函数,然后把视图函数绑定到相应的 URL 上。 但是等一等!

    1.2K50

    Django: 路由与视图

    因此,开发一个基于Django框架的Web应用,事实上就是填充Django框架 所约定的需要由开发者完成的部件。 根据Django约定,一个WSGI应用里最核心的部件有两个:路由表和视图。...Django框架 的核心功能就是路由:根据HTTP请求中的URL,查找路由表,将HTTP请求分发到 不同的视图去处理: ?...编写视图函数 DJango中的视图就是一个标准的Python函数,不过由于Django框架要调用 这个函数,因此,作为视图的函数有两个约定需要满足: ?...输入 :第一个参数是一个HttpRequest对象,这是Django框架对一个HTTP请求 的完整封装,视图函数从这个对象中提取请求中的信息 输出 :返回值应当是一个HttpResponse对象,Django...模仿框架构造一个HttpRequest对象,传给视图 函数就行了: req = HttpRequest() print v_index(req) 定义路由表 Django框架根据HTTP请求的URL来找到对应的视图函数

    79730

    Django(72)Django认证系统库–djoser「建议收藏」

    作用:Django认证系统的REST实现。djoser库提供了一组Django Rest Framework视图,用于处理注册、登录、注销、密码重置和帐户激活等基本操作。它适用于自定义用户模型。...环境准备与安装 支持的python版本 Python 3.5 Python 3.6 Python 3.7 Python 3.8 支持的Django版本 Django 1.11 Django 2.2...Django 3.1 支持的drf版本 Django Rest Framework 3.9 Django Rest Framework 3.10 Django Rest Framework 3.11...支持的身份验证后端 基于drf的身份认证Token 基于django-rest-framework-simplejwt的JWT认证 可用端点 /users/ /users/me/ /users...: ( 'rest_framework_simplejwt.authentication.JWTAuthentication', (...) ), } 然后配置django-rest-framework-simplejwt

    1.9K20

    Django学习笔记之Django视图View

    它就是视图函数。每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。 注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。...这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。 Django使用请求和响应对象来通过系统传递状态。...然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。 每个视图负责返回一个HttpResponse对象。...Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。...可选参数salt 可以用来对安全密钥强力攻击提供额外的保护。max_age 参数用于检查Cookie 对应的时间戳以确保Cookie 的时间不会超过max_age 秒。

    1.8K30
    领券