gpt4 book ai didi

python - 如何将 url 路由到类 Django 和 DRF 的特定方法

转载 作者:行者123 更新时间:2023-11-28 22:41:37 26 4
gpt4 key购买 nike

我是 python 世界的新手,现在我使用 Django 1.8 和 Rest Framework 构建应用程序,我想创建一个类 View 来 DRY 我的代码。

例如我想在我的系统中有一个学生的类(class) View

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status


class SnippetList(APIView):
def getWorstStudents(self, request, format=None):
# Logic here

如何在 urls.py 中分配一个指定的 URL 来命中这个方法?

而且我还实现了REST framework JWT Auth http://getblimp.github.io/django-rest-framework-jwt/用于 token 认证。

如何限制访问权限,只允许经过身份验证的用户访问此 url?

提前致谢!

最佳答案

使用routersviewsets .

首先,从 ModelViewSet 而不是 APIView 继承您的 View 。其次,在 getWorstStudents 方法中使用 @list_route 装饰器。第三,使用路由器将 urls.py 中的所有内容绑定(bind)起来。

它应该是这样的(我没有测试过代码):

View .py

class StudentsViewSet(viewsets.ViewSet):
@list_route(methods=['get'], permission_classes=(IsAuthenticated,)) # you can define who can access this view here
def getWorstStudents(self, request, format=None):
# Logic here

# routers.py
router = routers.DefaultRouter()
router.register(r'students', views.StudentsViewSet, base_name='student')

# urls.py
import .routers import router
urlpatterns = [
url(r'^', include(router.urls)),
]

路由器将生成一个名称为 student-getWorstStudents 的 View ,可从 students/getWorstStudents url 访问。

关于python - 如何将 url 路由到类 Django 和 DRF 的特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com