Python Django Rest框架:如何访问URL中的单个API元素?
我想通过如下URL访问每个API元素“/API/v1/element\u id” 我已经在序列化程序中明确定义了pk 序列化程序.pyPython Django Rest框架:如何访问URL中的单个API元素?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我想通过如下URL访问每个API元素“/API/v1/element\u id” 我已经在序列化程序中明确定义了pk 序列化程序.py class TweetSerializer(serializers.ModelSerializer): tweet_id = serializers.IntegerField() class Meta: fields = ('tweet_id', 'author', 'text', 'created_at', 'retweet_
class TweetSerializer(serializers.ModelSerializer):
tweet_id = serializers.IntegerField()
class Meta:
fields = ('tweet_id', 'author', 'text', 'created_at', 'retweet_count', 'favourite_count',)
model = Tweet
但它不起作用。我找不到错误
models.py
class Tweet(models.Model):
#tweet_id = models.ForeignKey(User, on_delete=models.CASCADE)
tweet_id = models.IntegerField()
created_at = models.CharField(max_length=100)
text = models.TextField()
author = models.CharField(max_length=100)
retweet_count = models.IntegerField()
favourite_count = models.IntegerField()
def __str__(self):
return str(self.tweet_id)
views.py
class TweetList(generics.ListCreateAPIView):
queryset = Tweet.objects.all()
serializer_class = TweetSerializer
class TweetDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Tweet.objects.all()
serializer_class = TweetSerializer
url.py
urlpatterns = [
path('<int:pk>/', TweetDetail.as_view()),
path('', TweetList.as_view()),
]
urlpatterns=[
路径(“/”,TweetDetail.as_view()),
路径(“”,TweetList.as_view()),
]
列出所有tweet可以正常工作,/api/v1/,但不会返回单个tweet
我曾尝试在模型中设置ForeignKey,但随后出现一个错误列tweet_id_id not found。如果要检索特定对象,通常需要在
视图中添加查找字段
因此在这个场景中,您的lookup\u字段是tweet\u id
你的观点变成
class TweetDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Tweet.objects.all()
serializer_class = TweetSerializer
lookup_field = 'tweet_id'
然后在url
中引用相同的lookup\u字段。所以你的url
就变成了
path('<tweet_id>', TweetDetail.as_view()),
路径(“”,TweetDetail.as_view()),
你应该通过/API/v1/1234/
访问详细的API,其中1234
是你的Tweet
实例的主键。是的,我知道,不管你得到了什么,它都不起作用。顺便说一句,正如我在我的问题中所说的,列表工作正常,所有的Tweet也是通过/API/v1/发送的,但是访问单个元素/API/v1/1234返回的都没有找到