不执行在类中定义的def()

时间:2018-10-10 15:03:59

标签: django http

我定义了一个具有get方法的类。当用户使用get方法发送请求时,该方法从数据库中获取数据,然后进行一些更改并将其发送给用户。但是,我尝试了。当用户启动获取请求时,仅执行以下两行代码

queryset = Product.objects.all()
serializer_class = ProductSerializer

并且get方法未执行。

## urls.py
router.register(r'getList', ProductListViewset)


## views.py

class ProductListViewset(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

    def get(self, request, format=None):
        serializer = ProductSerializer
        data = serializer.data
        username = data.get('user_name')
        user = User.objects.get(username__exact=username)
        new_data = {
            'id': data.get('id'),
            'user_name': data.get('user_name'),
            'user_image_URL': user.get('user_image_URL'),
            'c_time': data.get('c_time'),
            'goods_price': data.get('goods_price'),
            'title': data.get('title'),
            'description': data.get('description')
        }
        return Response(new_data, 200)

1 个答案:

答案 0 :(得分:0)

一开始,我通过以下方式定义了路线:

# urls.py
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'getList', ProductListViewset)
app_name = 'product'
urlpatterns = [
  url(r'', include(router.urls)),
]

如果我以此方式定义路由,则该框架默认已经提供了路由和动作。因此,当用户发送get请求时,它不会执行我定义的get方法。我通过以下方式解决了该问题:

app_name = 'product'
urlpatterns = [
    url(r'getList', ProductListViewset.as_view({'get': 'get'})),
]
相关问题