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/zh-hk/n/132349.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WFIB的頭像WFIB
上一篇 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

發表回復

登錄後才能評論