gpt4 book ai didi

django - 类中定义的 def() 未执行

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:27 25 4
gpt4 key购买 nike

我定义了一个具有 get 方法的类。当用户使用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)

最佳答案

一开始我是这样定义路由的:

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

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

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

关于django - 类中定义的 def() 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com