本文同步发表于个人站点:https://panzhixiang.cn
我从2020年开始写博客,一开始以技术笔记类为主,记录一些自己在学习技术过程中遇到的问题,主要有VUE、Django、Django Rest Frameowrk、DevOps等主题。
去年年初chatGPT突然在国内爆火,我也在2月的时候开始在日常工作中使用它来帮助我。大模型使用的越多,就越没有动力再去写技术笔记了。
因为感觉这些花了很多精力写出来的文字以后不会再有人看了,直接使用大模型就好了。
比如我在这篇博客中写了如何在Django Rest Framework中做认证、权限鉴定和限流等,一个新人如果看到这篇博客,我估计起码要一个小时才能理解这边博客并将其中的内容正确地使用到自己的代码中,但是如果问大模型,1分钟就有答案了。
比如我问了GPT4: 详细介绍一下如何做django rest framework中做认证、权限鉴定和限流,要有实际案例代码可供参考
,
下面是GPT4的回答,耗时不到1分钟。
Django Rest Framework(DRF)提供了一套完整的认证、权限管理和限流方案,下面我分别介绍下。
- 认证
DRF的认证方案包括
BasicAuthentication
、SessionAuthentication
、TokenAuthentication
等多种方式,你可以根据需要选择合适的认证方式,也可以自定义认证方式。以
TokenAuthentication
为例,首先需要在你的app下的models.py文件中定义User模型,然后在views.py文件中定义UserAuthToken
视图:from rest_framework.authtoken.views import ObtainAuthToken from rest_framework.authtoken.models import Token from rest_framework.response import Response class UserAuthToken(ObtainAuthToken): def post(self, request, *args, **kwargs): serializer = self.serializer_class(data=request.data, context={'request': request}) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] token, created = Token.objects.get_or_create(user=user) return Response({'token': token.key})
在urls.py中添加路由:
from django.urls import path from .views import UserAuthToken urlpatterns = [ path('api-token-auth/', UserAuthToken.as_view(), name='api_token_auth'), ]
- 权限鉴定
DRF提供了
IsAuthenticated
、IsAdminUser
、IsAuthenticatedOrReadOnly
等多种权限管理方式,你也可以自定义权限管理方式。以
IsAuthenticated
为例,在views.py文件中使用:from rest_framework.permissions import IsAuthenticated from rest_framework.views import APIView class ExampleView(APIView): permission_classes = [IsAuthenticated] def get(self, request, format=None): content = { 'status': 'request was permitted' } return Response(content)
- 限流
DRF提供了
AnonRateThrottle
、UserRateThrottle
、ScopedRateThrottle
等多种限流方式,你也可以自定义限流方式。以
AnonRateThrottle
为例,在settings.py中设置:REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.throttling.AnonRateThrottle', ], 'DEFAULT_THROTTLE_RATES': { 'anon': '100/day', } }
以上代码设置了匿名用户每天最多只能发出100次请求。
以上就是DRF中认证、权限鉴定和限流的基本使用方式,你需要根据实际需求进行选择和调整。
看到这样的回答,我实在没有再吭哧吭哧写博客的动力了,因为写出来的博客不一定能比大模型生成的更好,更何况,别人还能跟大模型进行即时交互,获取更贴切他们需求的回答。
所以,可以看到,我在2023年基本上没有写什么技术笔记类的博客。
但是随着在工作中使用大模型的时间变长之后,我又改变了自己的想法,我觉得还是有必要写技术笔记类博客的。
虽然大模型可以帮助我更快地写代码,更容易地使用新的技术,但是一直使用大模型的输出然后复制黏贴到VScode中再改改来完成开发任务的行为,会让我忽略了很多细节,而且很多时候我并没有真的掌握大模型输出的内容背后的技术,只是复制过来能用而已。
写技术笔记类博客有两个好处:复习和重新思考。
要想把笔记完整、通顺地写出来,肯定要对整个知识点非常清楚,如果存在不会或者不清楚的地方,在写笔记的时候就会发现,就会去查一下,搞清楚了再接着写,这样就相当于查缺补漏,而且往往可以加深自己对这个知识点的印象。虽然像GPT这样的大模型很好用,但是如果什么都依靠大模型,我们这样的工程师还有什么用?最终还是自己掌握了的才是可靠的。
关于重新思考,这个算是我自己觉得写博客的最大收获了。
我经常在开始写博客的时候,只有一个大概的想法,一边写一遍思考,写完了发现思绪也理顺了。
有时候写着写着就突然想到了一个之前没有意识到的idea,然后可以顺着这个idea去思考,也会有所得,而且这样想出来的idea很多时候都是比较独特的。
比如写到这里,我突然就想到了以前高中下了晚自习回家写作业,经常会进入一种忘我的境界(现在知道了这叫心流),现在已经很少会有这种状态了,因为不论是工作还是生活,总会有各种各样的事情突然打断自己的节奏,偶尔写博客和写代码的时候能进入这种状态
最后想说的是,以后还是会写一些技术笔记类的博客,帮助自己复习和思考。大模型只是工具,不能完全依赖它。