Shu*_*gan 5 python django django-rest-framework django-rest-auth django-rest-framework-simplejwt
我正在使用 DRF 并遇到了这个问题。我有一个第三方视图,我将其导入到我的urls.py文件中,如下所示:
from some_package import some_view
urlpatterns = [
path('view/',some_view)
]
Run Code Online (Sandbox Code Playgroud)
但我面临的问题是因为我已经启用了默认权限类,settings.py如下所示:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES':(
'rest_framework.permissions.IsAuthenticated',
),
}
Run Code Online (Sandbox Code Playgroud)
现在,当我使用 url 调用该视图时,它给了我身份验证错误,因为我没有提供令牌。有没有办法可以绕过身份验证错误而不必直接更改视图,我知道我们可以删除权限特定视图,但为此我必须对该some_view功能代码进行更改。但我不想这样做,假设我们无权访问该功能,我们只能传递数据并接收响应。如何绕过身份验证而不必更改该功能代码。我尝试搜索,但找不到我要找的东西。
我假设可能有某种方式我们可以从 urls.py 中做到这一点,例如指定任何参数或类似的东西,使该特定视图绕过身份验证而无需更改函数代码。
像这样的东西:
from some_package import some_view
urlpatterns = [
path('view/',some_view,"some_parameter") #passing someparameter from here or something like that
]
Run Code Online (Sandbox Code Playgroud)
有可能是我在找什么吗?提前致谢 :)
因此,对于第三方视图来说,最合适的方法是通过在您的 中定义它们来使用装饰器urls.py:
我假设这some_view是一个继承自的类rest_framework.views.APIView:
urls.py
from django.urls import path
from rest_framework.decorators import permission_classes, authentication_classes
from rest_framework.permissions import AllowAny
from some_package import some_view
urlpatterns = [
path('', authentication_classes([])(permission_classes([AllowAny])(some_view)).as_view())
]
Run Code Online (Sandbox Code Playgroud)
我假设这some_view是一个简单的 Django 视图函数,您需要为GET方法定义它:
urls.py
from django.urls import path
from rest_framework.decorators import api_view, permission_classes, authentication_classes
from rest_framework.permissions import AllowAny
from some_package import some_view
urlpatterns = [
path('', api_view(['GET'])(authentication_classes([])(permission_classes([AllowAny])(some_view))))
]
Run Code Online (Sandbox Code Playgroud)
我假设这some_view是一个api_view经过修饰的 DRF 视图函数。这是最难的,也可能是最不可能的部分,因为你必须取消之前的api_view装饰器的装饰。如果视图函数用 修饰api_view,那么它已经转换为 Django 视图函数,因此既不能permision_classes也authentication_classes不能附加到类中:
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |