记录-2023/11/10

 has_object_permission和has_permission的区别

IntegerField和AutoField的关系和区别

class AutoField(AutoFieldMixin, IntegerField, metaclass=AutoFieldMeta):
    def get_internal_type(self):
        return "AutoField"

    def rel_db_type(self, connection):
        return IntegerField().db_type(connection=connection)

request的属性和方法

WSGI

HyperlinkedModelSerializer

精简与可读

视图和路由

HyperlinkedModelSerializer

自动产生一个url代替id。

对于一个模型,在数据库中,id主键是行在数据库中的唯一标识。

在网页中,URL是网页在网络世界中的唯一标识,通过在接口中展示数据,展示主键id并不能够给前端人员直接的跳转作用,但是如果把id变成URL,前端人员则可以直接使用URL达到数据库中的这行数据所在的页面(通过URL直接进行跳转)。

这里我们也要分析一下后端接口的结构和RESTful的意义。

# models.py
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
# serializers.py
from rest_framework import serializers
from .models import Book, Author

class AuthorSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Author
        fields = ['url', 'name']

class BookSerializer(serializers.HyperlinkedModelSerializer):
    author = AuthorSerializer()

    class Meta:
        model = Book
        fields = ['url', 'title', 'author']

 在视图集中使用多个序列化器

虽然视图集中默认只提供一个序列化器,但是我们可以通过重写方法实现序列化器的选择。

当条件不同的时候选择不同的序列化器。
比如,你只写了一个序列化器,但是我们在List时一般都不需要太多数据,所以后端提供太多的数据就是不必要和耗费资源的,所以我们可以根据条件使用不同的序列化器,这里的条件可以是任意条件,比如请求类型。

HTTP请求 

JWT

JWT的Token保存在客户端,拜托了对服务器的依赖。

在某些需要进行身份验证的业务中,用户需要把令牌一块提交(就跟提交用户名和密码一样)

JWT令牌样子

JSON Web Token Introduction - jwt.io

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjA5MjEwMjg0LCJqdGkiOiJiNzMxMTliMTZjNWM0YTExODNkOGJiZTNhZDZmZmYzMyIsInVzZXJfaWQiOjJ9.59ZavqFzjE3EoDrniu2cwgc_cq1Rv1OxpZeqRte_HLw 

Session 

数据结构的共性和个性方法

理解

总结权限类的共性进行合并

内置User的创建方法解析(特别是密码部分)

APIView的使用

权限图

父类子类的super调用练习

模仿复现下面的操作

def get_permissions(self):
    """
    Instantiates and returns the list of permissions that this view requires.
    """
    return [permission() for permission in self.permission_classes]
def get_permissions(self):
    if self.request.method == 'POST':
        self.permission_classes = [AllowAny]
    else:
        self.permission_classes = [IsAuthenticatedOrReadOnly, IsSelfOrReadOnly]
    return super().get_permissions()

进程间通信(IPC,Inter Process Communication)方式 

系统调用 

一种配置文件书写时利用自动提示导致的错误

当我没有加单引号,直接写利用提示时,在文件的顶部自动引入了一个东西,但是没有使用,这个会导致错误。解决方法的话可以在测试文件的地方进行书写提示,然后剪切复制到指定位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值