【问题标题】:django url patterns error , id not passed to view.django url patterns 错误,id 未传递给查看。
【发布时间】:2018-09-04 00:40:39
【问题描述】:

我尝试创建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 与其中任何一个都不匹配。

如何解决?

【问题讨论】:

  • 试过了,得到了同样的回应

标签: django django-rest-framework


【解决方案1】:

您的正则表达式中缺少?

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

或者,如果你想使用path

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

【讨论】:

    【解决方案2】:

    在 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+)/$' 中不起作用。

    https://docs.djangoproject.com/en/3.1/intro/overview/

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2014-09-22
      • 1970-01-01
      • 2015-03-25
      • 2017-09-09
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      相关资源
      最近更新 更多