【问题标题】:How do I pass primary key from url to function based view in django?如何将主键从 url 传递到 django 中基于函数的视图?
【发布时间】:2018-03-05 07:11:51
【问题描述】:

我有一个基于函数的视图:

@api_view(['GET', 'PUT', 'DELETE'])
def hotel_detail(request, pk):
    # Lots of code

我正在使用这个 URL 模式:

url(r'^hotel/(?P<pk>[0-9]+)/$', api.hotel_detail)

但它不起作用

查看:

@api_view(['GET', 'PUT', 'DELETE'])
def hotel_detail(request, pk):
    # Retrieve, update or delete a Hotel instance.
    try:
        hotel = models.Hotel.objects.get(pk=pk)
    except models.Hotel.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = serializers.HotelSerializer(hotel)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = serializers.HotelSerializer(hotel, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        hotel.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

我没有收到任何错误消息。

【问题讨论】:

  • 添加views.py并发布错误。
  • 你有什么错误吗?
  • 我没有收到任何错误信息。
  • 在 urly.py 中:api.hotel_detail 或 views.hotel_detail ?
  • 我在 api.py 文件中创建了视图。

标签: django django-rest-framework django-views django-urls


【解决方案1】:

您好,您可以尝试使用命名组

在你的 urls.py

from django.conf.urls import url
from . import views
urlpatterns = [
         url(r'^hotel/(?P<pk>[0-9]+)/$', api.hotel_detail name="hotel_details"),
]

如果您想了解更多信息,请参阅文档Named groups

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 2015-11-09
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多