【发布时间】:2022-01-12 20:54:40
【问题描述】:
我对 Django 和 Django REST 框架非常陌生,我想为 4 个相对相似的游戏实现 API。最基本的游戏包括玩家标记图像并为此获得分数,如果他们输入与相同图像的共同玩家相同的标签。一场比赛由 3 轮组成。
到目前为止,我所做的是为游戏类型、游戏会话、游戏回合、要显示的图像和标签创建一个视图,它将分为标签(用户已使用此标签作为输入)和标签(不止一个用户为同一张图片输入了相同的标签)。
所有这些视图看起来都类似于下面的 Gametype 和 Tagging 视图。
"""
API View that handles retrieving the correct type of a game
"""
serializer_class = GametypeSerializer
def get_queryset(self):
gametypes = Gametype.objects.all().order_by("name")
return gametypes
def get(self, request, *args, **kwargs):
gametype = self.get_queryset()
serializer = GametypeSerializer(gametype, many=True)
return Response(serializer.data)
class Tagging(APIView):
"""
API View to do everything to do with taggings
"""
serializer_class = TaggingSerializer
def get_queryset(self):
taggings = Tagging.objects.all().filter(resource=8225)
return taggings
def get(self, request, *args, **kwargs):
tagging = self.get_queryset()
serializer = TaggingSerializer(tagging, many=True)
return Response(serializer.data)
def post(self, request, *args, **kwargs):
tagging = request.data.get_queryset()
serializer = TaggingSerializer(data=tagging)
if serializer.is_valid(raise_exception=True):
saved_tagging = serializer.save()
return Response(saved_tagging)
除此之外,Tag Tagging 和 Gamesession 视图还需要 POST 请求(我仍在处理这些请求)。我也只是为这个 Web 应用程序做后端,所以我只能用我迄今为止用 Python(使用 tkinter)编写的 GUI 来测试所有这些。 我正在努力解决的是:如何将视图相互连接,以使游戏逻辑正常工作?还是我必须为每个游戏编写一个视图并为此编写一个单独的序列化? 更好的说法是 - 我如何使游戏的后端与这些视图一起工作?我错过了什么?
【问题讨论】:
-
嗨,我不知道我是否理解 100%,但我们无法将一个视图连接到另一个视图,但无论如何你不需要,如果我正在做这个,我会怎么做,是创建那些游戏视图(我不知道你的后端如何)并为每个游戏创建一个视图,用户需要使用来自回合的数据和视图调用函数来更新回合数,检查点等。
-
您好,谢谢您的回答。这意味着我使用基于函数的视图,对吧?
-
不是真的,你可以使用你写的这个视图,只是在它们里面调用一个函数
-
那么在另一个视图中调用一个视图的函数?
-
我给你写了一个答案,让你更清楚我想解释什么
标签: python django api django-rest-framework