首页 > 解决方案 > 想使用 django rest 框架进行身份验证,我想为导师和其他用户设置登录路径并保留一些端点

问题描述

基本上我想使用 user_details 模型对当前用户进行身份验证,并检查当前用户是否是导师并为端点建立授权并保留用户的一些端点 但我无法理解如何实现它

我的模型.py

from django.db import models

# Create your models here.

class LiveClass(models.Model):
    standard = models.IntegerField()
    no_of_students_registered = models.IntegerField(default=0)
    class Meta:
        verbose_name_plural = 'Class'

class User_details(models.Model):
    name = models.CharField(max_length=30)
    standard = models.ForeignKey(LiveClass, on_delete=models.CASCADE)
    email = models.EmailField(max_length=30)
    mobile_number = models.IntegerField()
    class Meta:
        verbose_name_plural = 'User_details'


class Mentor(models.Model):
    name = models.CharField(max_length=30)
    details = models.TextField()
    class Meta:
        verbose_name_plural = 'Mentors'


class LiveClass_details(models.Model):
    standard = models.ForeignKey(LiveClass, on_delete=models.CASCADE)
    chapter_name = models.CharField(max_length=30)
    chapter_details = models.TextField()
    mentor_name = models.ForeignKey(Mentor, max_length=30, on_delete=models.CASCADE)
    class_time = models.DateTimeField()
    class Meta:
        verbose_name_plural = 'LiveClass_details'

class LiveClass_registration(models.Model):
    class_details = models.OneToOneField(LiveClass_details, on_delete=models.CASCADE)
    name = models.OneToOneField(User_details, on_delete=models.CASCADE)

    class Meta: 
         verbose_name_plural = 'LiveClass_registration'

我的序列化程序.py

from rest_framework import serializers
from . import models



class LiveClass_serializer(serializers.ModelSerializer):
    class Meta:
        model = models.LiveClass
        fields = '__all__'


class User_details_serializer(serializers.ModelSerializer):
    class Meta:
        model = models.User_details
        fields = '__all__'


class LiveClass_details_serializer(serializers.ModelSerializer):
    class Meta:
        model = models.LiveClass_details
        fields = '__all__'

class Mentor_serializer(serializers.ModelSerializer):
    class Meta:
        model = models.Mentor
        fields = '__all__'

class LiveClass_registration_serializer(serializers.ModelSerializer):
    class Meta:
        model = models.LiveClass_registration
        fields = '__all__'

我的 urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('liveclass_api.urls'))
]

我的观点.py

from django.shortcuts import render
from rest_framework import mixins
from rest_framework import generics


from . import serializers
from . import models
# Create your views here.

class ListLiveClass(mixins.ListModelMixin, generics.GenericAPIView):
    queryset = models.LiveClass_details.objects.all()
    serializer_class = serializers.LiveClass_details_serializer
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

class ListMentors(mixins.ListModelMixin, generics.GenericAPIView):
    queryset = models.Mentor.objects.all()
    serializer_class = serializers.Mentor_serializer
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

完整的github代码https ://github.com/dhruv354/django-liveclass.git

标签: pythondjangodjango-rest-framework

解决方案


推荐阅读