我定义了一个具有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)
答案 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'})),
]