django - 使用 Django REST 框架,如何解析 RESTful 字符串参数?
问题描述
我正在使用 Python 3.9
Django==3.1.4
djangorestframework==3.12.2
我想将一个安静的参数(“作者”字符串)传递给我的 GET 方法。在我的 urls.py 文件中,我有
urlpatterns = [
...
path('user/<str:author>', views.UserView.as_view()),
然后在我的 UserView 类(在我的 views.py 文件中定义)中,我有
class UserView(APIView):
def get(self, request):
...
author = self.kwargs.get('author', None)
但是当我执行
GET http://localhost:8000/user/myauthor
我得到错误
TypeError: get() got an unexpected keyword argument 'author'
我还需要做什么才能正确访问 URL 中的 RESTful 参数?
解决方案
get()
方法也应该接受 url 参数,无论你如何命名参数,你都可以使用*args
和**kwargs
语法来确保它工作:
class UserView(APIView):
def get(self, request, *args, **kwargs):
...
author = self.kwargs.get('author', None)
推荐阅读
- java - 努力设置 JAVA_HOME 环境变量。我正在尝试在 mac 上安装最新版本的 maven
- python - 删除 nan 值后合并几乎相同的行
- javascript - 具有本机反应的问题身份验证承载
- visual-studio-code - 命令“UI5:导出到 i18n”导致错误(未找到命令“ui5plugin.exportToi18n”)
- javascript - 'Set 类型的错误参数
' 不可分配给“字符串”类型的参数 - amazon-web-services - 使用 AWS Fargate 解析同一 VPC 中的主机
- javascript - jQuery 内置函数名称在编辑器中被剥离
- javascript - 未捕获的 ReferenceError:未定义数据
- javascript - 如何将 Buefy 全局对象添加到 Vue 3 CLI
- node.js - JupyterLab plotly 扩展错误:找不到模块 jupyter\lab\staging\node_modules\ejs\postinstall.js