Ron*_*ipe 9 django url django-urls django-views django-rest-framework
我试图在我的测试中使用 reverse() 。我试过 这个答案!但它不起作用。
我仍然收到错误
django.urls.exceptions.NoReverseMatch: Reverse for 'patients-list' with no arguments not found。
router = DefaultRouter()
router.register(r'patients', views.PatientSet, base_name='patients')
urlpatterns = [
url(r'^', include(router.urls)),
]
Run Code Online (Sandbox Code Playgroud)
这里是 ModelViewSet
class PatientSet(viewsets.ModelViewSet):
queryset = Patient.objects.all()
serializer_class = PatientSerializer
permission_classes = [IsDoctorUser]
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ['is_active']
Run Code Online (Sandbox Code Playgroud)
我在我的测试中使用这种方式 url = reverse('patients-list')
首先,base_name路由器的basenamekwarg 在 DRF 3.11 中被弃用,取而代之的是kwarg,但这不应该是导致问题的原因。我实际上也看不出您提供的代码示例有什么问题。
我推荐的是尝试安装django-extensions包。安装并配置 django-extensions 后,您可以使用该python manage.py show_urls命令输出所有路由的列表。
python manage.py show_urls
/api/accounts/users/ accounts.views.UserViewSet account:user-list
/api/accounts/users/<uuid>/ accounts.views.UserViewSet account:user-detail
Run Code Online (Sandbox Code Playgroud)
每一行都包含 url /api/accounts/users/<uuid>/、视图的 pathaccounts.views.UserViewSet和route的名称(这是你想要的反向)account:user-detail。有了这个,我希望您能够为您的路线找到正确的名称。URL 部分还指示该路由所需的任何参数。
| 归档时间: |
|
| 查看次数: |
3296 次 |
| 最近记录: |