Django REST framework从前端后端分离到SimpleJWT

一、前端后端分离

随着Web应用程序的发展,前端和后端的分离越来越受欢迎。 Django REST framework 提供了各种用于构建可扩展的API的工具和库。 API支持前后端分离,这意味着我们可以使用独立的前端框架,例如Vue.js、React.js或Angular,来实现客户端,同时使用DRF构建虚构化的后端

如果你是一个REST API的后端人员,但对前端开发不是很熟悉,这并不妨碍你使用 Django Rest Framework 进行API构建。一些优秀的JavaScript框架可以帮助你将 Django Rest Framework 构建的API和你的前端应用程序分离开。


from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from myapp.serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

二、DRF认证

Django Rest Framework提供了一个优雅的方式来应用认证,使你更愿意使用它来保护你的API。DRF提供了一个可插拔的认证架构,允许你使用session、Token、OAuth1a和OAuth2等不同的认证方案。

这里我们介绍一个轻量级的认证库SimpleJWT,它是构建在JWT(JSON Web Token)之上的库,它可以轻松地用于开发REST APIs,并提供了轻松的设置和安全认证。SimpleJWT不需要特定的用户模型,它可以与任何Django身份验证系统一起使用。


# settings.py
INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework_simplejwt',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

三、序列化和验证

在DRF中,序列化是将Python对象转换为JSON格式的过程,当数据以某种方式从API公开时,你可以使用序列化器来更好地组织,过滤和限制总体数据。同时,DRF还提供了验证器来确保输入数据的正确性。它们共同为DRF提供强大的数据安全机制和易于使用的数据交互方式。


# serializers.py
from rest_framework import serializers
from myapp.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

    def create(self, validated_data):
        user = User(
            email=validated_data['email'],
            username=validated_data['username'],
            first_name=validated_data['first_name'],
            last_name=validated_data['last_name'],
        )
        user.set_password(validated_data['password'])
        user.save()
        return user

# views.py
from rest_framework import generics
from myapp.models import User
from myapp.serializers import UserSerializer

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

原创文章,作者:WFIB,如若转载,请注明出处:https://www.506064.com/n/132349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WFIBWFIB
上一篇 2024-10-03 23:51
下一篇 2024-10-03 23:51

相关推荐

  • Django ORM如何实现或的条件查询

    在我们使用Django进行数据库操作的时候,查询条件往往不止一个,一个好的查询语句需要考虑我们的查询要求以及业务场景。在实际工作中,我们经常需要使用或的条件进行查询,本文将详细介绍…

    编程 2025-04-29
  • Cookie是后端生成的吗?

    是的,Cookie通常是由后端生成并发送给客户端的。下面从多个方面详细阐述这个问题。 一、什么是Cookie? 我们先来简单地了解一下什么是Cookie。Cookie是一种保存在客…

    编程 2025-04-28
  • Avue中如何按照后端返回的链接显示图片

    Avue是一款基于Vue.js、Element-ui等技术栈的可视化开发框架,能够轻松搭建前端页面。在开发中,我们使用到的图片通常都是存储在后端服务器上的,那么如何使用Avue来展…

    编程 2025-04-28
  • 小波特掘金——从前端到后端的全栈开发之路

    本文将从小波特掘金平台的概述、前端和后端技术栈、以及实例代码等多个方面来探讨小波特掘金作为一个全栈开发工程师的必练平台。 一、平台概述 小波特掘金是一个前后端分离式的技术分享社区,…

    编程 2025-04-27
  • 后端接口设计开发经验分享

    在受到前端某些限制或特殊需求时,后端接口的设计和开发显得尤为重要。下面从以下几个方面进行讲述。 一、命名规范 合理的命名规范可以大大提高接口的可读性和可维护性。以下是一些命名规范的…

    编程 2025-04-27
  • Django项目中执行Python脚本

    本文将阐述在Django项目中如何执行Python脚本以及执行脚本的几种方式。 一、subprocess模块执行Python脚本 subprocess模块提供了一个简单的接口用于创…

    编程 2025-04-27
  • Python前后端开发全能工程师

    本文将从多个方面对Python前后端开发做详细的阐述,以帮助那些想要成为全能工程师的开发者。 一、后端开发 后端开发主要是指服务器端的开发,通常涉及到数据库设计、API开发等内容。…

    编程 2025-04-27
  • Python Django Channels用法介绍

    本文将从多个方面对Python Django Channels进行详细的讲解,包括介绍、使用、优缺点以及实际应用等,帮助大家更好地理解和应用Python Django Channe…

    编程 2025-04-25
  • Django教程:从入门到实战

    Django是一个高级的Python Web框架,采用了MTV的设计模式。MTV表示Model-Template-View,是Django框架中的三个核心部分。 一、Django入…

    编程 2025-04-24
  • 启动Django

    一、安装Django 在启动Django之前,我们需要首先安装Django。Django的最新版本可以在官网上找到。 pip install Django 安装完毕之后,我们就可以…

    编程 2025-04-24

发表回复

登录后才能评论