我创建了一个序列化器和一个API端点,这样我就可以在我的React应用程序中从Django DB中检索一些数据,但是得到了这个错误消息:
AttributeError: 'ProgrammingChallengesView' object has no attribute 'get'
字符串
以下是我的models.py:
#creating programming challenges
class ProgrammingChallenges(models.Model):
challenge_id = models.AutoField(primary_key=True)
challenge_name = models.CharField(max_length=200)
challenge_description = models.TextField()
challenge_expectations = models.TextField()
型
我的序列化器:
from accounts.models import ProgrammingChallenges
...
class ProgrammingChallengesView(serializers.ModelSerializer):
class Meta:
model = ProgrammingChallenges
fields = '__all__'
型
和我的urls.py:
path('api/programming_challenges/', ProgrammingChallengesView, name='programming_challenges'),
型
2条答案
按热度按时间js5cn81o1#
感谢评论;我显然不明白序列化程序只转换我的数据以使其通过API可用,我仍然必须为我的API的端点创建一个视图。
我选择创建一个
ReadOnlyModelView
,因为我只想从这个端点GET
数据。以下是我在我的观点中所写的:
字符串
在我的urls.py中:
型
bsxbgnwa2#
您正在尝试将序列化程序用作视图。
代码应为:
models.py
字符串
一些建议:
1.您的模型名称可以是ProgrammingChallenge(单数),而不是ProgrammingChallenge(复数)。
1.我认为没有必要在所有字段名之前添加前缀challenge。因为很明显,字段都在一个名为ProgrammingChallenge的Model中。而且像ProgrammingChallenge.name这样比ProgrammingChallenge.challenge_name更易读,更容易访问
1.不需要手动添加字段id,Django模型会自动添加id字段作为primary_key
serializer.py
型
序列化器没有问题。
现在,主要的问题是你的代码中没有任何视图。你可以使用APIView,generic views或viewset。在这个例子中,我将使用ModelViewSet来处理指定模型的CRUD操作。
viewsets.py
型
urls.py
型
使用viewset的另一个优点是,它还通过路由自动为其CRUD方法生成所有端点。
它可以帮助你开始你的第一个项目。