首页 文章

django url模式错误,id未传递给视图 .

提问于
浏览
0

我尝试创建rest api,但却停留在生成url上 .

urlpatterns = [
path('admin/', admin.site.urls),
url(r'^api/shop/', include(('shop.api.urls', 'shop'), namespace='api-shop',)), ]

也尝试过

path('api/shop/', include(('shop.api.urls', 'shop'), namespace='api-shop',)),

在shop / api / urls.py我写道

urlpatterns = [
url(r'^(P<id>\d+)/$', ShopRudView.as_view(), name='shop-rud')

]

并在shop / api / views.py中使用drf库泛型视图来创建

class ShopRudView(generics.RetrieveUpdateDestroyAPIView):
lookup_field = 'id'
serializer_class = ShopSerializer

def get_queryset(self):
    return Shop.objects.all()

当我进入http://127.0.0.1:8000/api/shop/1我得到

在untitled1.urls中定义的URLconf中,Django按以下顺序尝试了这些URL模式:admin / shop / ^ api / shop / ^(P \ d)/ $ [name ='shop-rud']当前路径,api / shop / 1,与这些中的任何一个都不匹配 .

如何解决?

1 回答

  • 1

    您在正则表达式中缺少 ?

    url(r'^(?P<id>\d+)/$', ShopRudView.as_view(), name='shop-rud')
    

    或者,如果您想使用 path

    path('<int:id>/', ShopRudView.as_view(), name='shop-rud')
    

相关问题