我正在Django 2.1中的Django Rest框架中创建一个基本身份验证版本。但是它显示“.authenticate()必须被重写”

2024-06-01 00:18:38 发布

您现在位置:Python中文网/ 问答频道 /正文

py设置

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

模型.py

from django.db import models
class Emp(models.Model):
    eid = models.IntegerField()
    ename = models.CharField(max_length=30)
    sal = models.IntegerField()
    def __str__(self):
        return self.ename

管理员py

from django.contrib import admin
from .models import Emp
class AdminEmp(admin.ModelAdmin):
    list_display = ['eid','ename','sal']
admin.site.register(Emp,AdminEmp)

序列化程序.py

from .models import Emp
from rest_framework import serializers
class EmpSerializer(serializers.ModelSerializer):
    class Meta:
        model = Emp
        fields = ('eid','ename','sal')

视图.py

from .serializers import EmpSerializer
from .models import Emp
from rest_framework import viewsets
from rest_framework.authentication import BaseAuthentication
from rest_framework.permissions import IsAuthenticated
class EmpViewSet2(viewsets.ModelViewSet):
    authentication_classes = (BaseAuthentication,)
    permission_classes = (IsAuthenticated,)
    queryset = Emp.objects.all()
    serializer_class = EmpSerializer

应用程序级别网址.py

from django.conf.urls import url,include
from .views import EmpViewSet2
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('emp_viewset',EmpViewSet2,base_name='emp_viewset2')
urlpatterns = [
url(r'',include(router.urls)) ]

项目级网址.py

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('Basic_Authentication_App.urls'))
]

用户名和密码窗口enter image description here

Django Rest框架窗口 “emp_viewset”:“http://127.0.0.1:3499/api/emp_viewset/

enter image description here

如下所示: 未实现错误位于/api/emp_viewset/.authenticate()必须被重写。

enter image description here


Tags: djangofrompyimportrestincludeadminmodels
1条回答
网友
1楼 · 发布于 2024-06-01 00:18:38

您需要编写自己的身份验证后端。您可以从django官方文档中看到一个example,该文档详细解释了如何实现(即重写)authenticate函数。在

当然,如果您想提供自己的权限,您可以implement自定义身份验证后端。在

相关问题 更多 >