兄弟们,姐妹们,各位奋战在代码一线的“码农”朋友们,今天咱们不聊风花雪月,就来唠一唠咱们Django项目里那个让人又爱又恨的“安全”问题。
你有没有过这样的噩梦时刻?
- 你辛辛苦苦写好了用户注册、登录的API,结果隔壁部门的同事跑来跟你说:“哎,给我个账号呗,我想看看数据长啥样。”
- 你心怀忐忑地给了,下一秒就收到报警:数据库里莫名其妙多了一万条名叫“测试”的用户记录!
- 或者,你想给老板一个后台数据查看权限,但又怕他老人家一个手滑,把核心订单表给
DELETED了……
内心OS: “我滴个乖乖,我这API简直是在‘裸奔’啊!”
别慌!今天,我就是来给你送“安全小马甲”的。我们将一起深入Django REST Framework (DRF) 的腹地,施展“权限”魔法,专门为这类“围观群众”创建一个只能读取数据,但绝不能增、删、改的“只读用户”!
第一幕:舞台搭建——咱们的简易“图书档案馆”
在开始施展魔法之前,我们先得有个“魔法实验室”。假设我们正在构建一个线上图书馆的API,核心模型就是Book(图书)。
1. 创建模型(models.py)
from django.db import models
from django.contrib.auth.models import User
# 我们的核心模型:图书
class Book(models.Model):
title = models.CharField(max_length=200, verbose_name="书名")
author = models.CharField(max_length=100, verbose_name="作者")
published_date = models.DateField(verbose_name="出版日期")
isbn = models.CharField(max_length=13, unique=True, verbose_name="ISBN号")
def __str__(self):
return self.title
2. 创建序列化器(serializers.py)
序列化器就像是数据的“翻译官”,负责把模型对象转换成JSON,或者反过来。
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__' # 暴露所有字段
3. 创建视图集(views.py)
视图集是DRF的“魔法核心”,它帮我们自动生成一堆API端点(增删改查)。
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
Django API只读权限实战

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



