我尝试创建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模式: 管理员/ 店/ ^ api / shop / ^(P \ d +)/ $ [name ='shop-rud'] 当前路径api / shop / 1与其中任何一个都不匹配。
如何解决这个问题?
答案 0 :(得分:1)
您遗漏了正则表达式中的?
:
url(r'^(?P<id>\d+)/$', ShopRudView.as_view(), name='shop-rud')
或者,如果您想使用path
:
path('<int:id>/', ShopRudView.as_view(), name='shop-rud')
答案 1 :(得分:0)
在Django 3.1.1中
urlpatterns = [
path('api/<int:id>/', views.EmployeeDetailsCBV.as_view()),
]
url: http://127.0.0.1:8000/api/3/
Django 3中的'(?Pd +)/ $'无效。