django-rest-framework - DRF 路由器的参数 URL
问题描述
我正在使用 Django Rest Framework 来创建 API。在这个项目中,我想在 URL 中捕获参数。例如我想捕获用户的用户名和密码,我的想法是这样的:
http://localhost:8000/accounts/login/?unsername=username&password=password
但我不能,我使用路由器和 django-filter,但我无法获取参数 url。我的项目文件在那里:
视图.py:
class AccountsData(viewsets.ModelViewSet):
queryset = models.UserData.objects.all()
serializer_class = serializers.AccountsDataSerializer
permission_classes = (IsAuthenticated,)
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = ['username', 'password']
lookup_url_kwarg = 'username'
@action(methods=['get'], detail=True, url_name='login', url_path='login')
def login(self, request, pk=None):
return Response({"Login successfully"}, 200)
网址.py:
from api import views
router = routers.SimpleRouter()
router.register(r'accounts', views.AccountsData)
解决方案
请求查询参数与路由无关,它们随请求一起传递,与您如何配置路由无关。request.query_params
例如,您可以访问它们,request.query_params.get('username')
将获取username
参数的值。
话虽如此,您的想法有一个严重的错误:密码或任何类型的机密数据都不应该进入查询参数,您应该使用在其正文中携带数据的 http 动词(例如 POST)。
推荐阅读
- json - 如何使用 Jekyll 插件缩小包含的 json 文件?
- xml - XMLStarlet,XPath - 如何根据节点删除属性
- ios - 如何在滚动视图的中心垂直对齐堆栈视图?
- javascript - Rally SDK 2.1 应用程序设置多选值未保留
- python - 将 model.predict 与 tensorflow 教程一起使用时出错。ValueError:找不到匹配的函数来调用从 SavedModel 加载
- c# - 为什么动画不适用于此 2D 统一角色控制器脚本
- javascript - 如何使用 Apple Music Kit JS 播放音乐
- c# - 如何通过 SSH 连接向 Telnet 发送命令
- react-native - 在 React Native 中右对齐单个项目
- database - 有没有办法在 MS Access 上创建这种表?