def game_detail(request, pk): try: # Read, Update, Delete 객체를 선택한다 game = Game.objects.get(pk=pk) except Game.DoseNotExist: # DB에 객체가 없는 경우 # return HttpResponse(status=status.HTTP_404_NOT_FOUND) return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': # Get 방식은 DB를 읽는다 games_serializer = GameSerializer(game) # game 모든 객체를 직렬화 # return JSONResponse(games_serializer.data) # 직렬화 객체를 JSON으로 출력 return Response(games_serializer.data) elif request.method == 'PUT': # game_data = JSONParser().parse(request) # games_serializer = GameSerializer(game, data=game_data) games_serializer = GameSerializer(game, data=request.data) # 위 2줄을 1줄로 대체 if games_serializer.is_valid(): games_serializer.save() # return JSONResponse(games_serializer.data) return Response(games_serializer.data) # return JSONResponse(games_serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(games_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': game.delete() # return HttpResponse(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
def game_detail(request,pk): try: game = Game.objects.get(pk = pk) except Game.DoesNotExist: return HttpResponse(status = status.HTTP_404_NOT_FOUND) if request.method == 'GET': game_serializer = GameSerializer(game) return JSONResponse(game_serializer.data) elif request.method == 'POST': game_data = JSONParser().parse(game) game_serializer = GameSerializer(game, data = game_data) if game_serializer.is_valid(): game_serializer.save() return JSONResponse(game_serializer.data) return JSONResponse(game_serializer.errors, status= status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': game.delete() return HttpResponse(status = status.HTTP_204_NO_CONTENT)
def create(self, request): serializer = GameSerializer(data=request.data) if serializer.is_valid(): user = request.user player = user.player player.hosted_count += 1 player.game_count += 1 if request.data['nickname'] != "": player.nickname = request.data['nickname'] elif player.nickname == "": player.nickname = player.user.username player.save() new_game = Game() new_game.host = player new_game.name = request.data['name'] new_game.motto = request.data['motto'] new_game.passcode = request.data['passcode'] new_game.save() new_game_player_detail = GamePlayerDetail() new_game_player_detail.game = new_game new_game_player_detail.player = player new_game_player_detail.save() return Response({'status': 'game set', 'game_id': new_game.id}) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def _test_fix_times(self, game_data): game = Game.objects.get(id=self.game_id) self.assertFalse(GameSerializer(game, data=game_data).is_valid()) s = GameSerializer(game, data=game_data, context={"fix_times": True}) self.assertTrue(s.is_valid()) self.assertTrue(GameSerializer(game, data=s.validated_data).is_valid()) update_game(game, s.validated_data)
def game_detail(request, pk): try: game = Game.objects.get(pk=pk) except Game.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) games = Game.objects.all() games_serializer = GameSerializer(games, many=True) tam = len(games_serializer.data) nomes = [] i = tam - 1 for nome in games_serializer.data: nome = games_serializer.data[i]['name'] nomes.append(nome) i = i - 1 if request.method == 'GET': game_serializer = GameSerializer(game) return Response(game_serializer.data) elif request.method == 'PUT': game_serializer = GameSerializer(game, data=request.data) if game_serializer.is_valid(): if (game_serializer.validated_data['name'] in nomes): return Response("Já existe jogo com esse nome!") game_serializer.save() return Response(game_serializer.data) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': if game.played == True: return Response("O jogo não pode ser excluído!") game.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def game_list(request): games = Game.objects.all() games_serializer = GameSerializer(games, many=True) tam = len(games_serializer.data) nomes = [] i = tam - 1 for nome in games_serializer.data: nome = games_serializer.data[i]['name'] nomes.append(nome) i = i - 1 if request.method == 'GET': return Response(games_serializer.data) elif request.method == 'POST': game_serializer = GameSerializer(data=request.data) if game_serializer.is_valid(): if (game_serializer.validated_data['name'] in nomes): return Response("O Jogo já existe!") game_serializer.save() return Response(game_serializer.validated_data, status=status.HTTP_201_CREATED) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def game_list(request): if request.method == 'GET': games = Game.objects.all() game_serializer = GameSerializer(games, many=True) return Response(game_serializer.data) elif request.method == 'POST': game_serializer = GameSerializer(data=request.data) if game_serializer.is_valid(): game_serializer.save() return Response(game_serializer.data, status=status.HTTP_201_CREATED) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def game_list(request): if request.method == 'GET': games = Game.objects.all() games_serializer = GameSerializer(games, many=True) return JSONResponse(games_serializer.data) elif request.method == 'POST': game_data = JSONParser().parse(request) games_serializer = GameSerializer(data=game_data) if games_serializer.is_valid(): games_serializer.save() return JSONResponse(games_serializer.data, status=status.HTTP_201_CREATED)
def game_list(request): if request.method == 'GET': games = Game.objects.all() games_serializer = GameSerializer(games, many=True) return JSONResponse(games_serializer.data) elif request.method == 'POST': game_data = JSONParser().parse(request) game_serializer = GameSerializer(data=game_data) if game_serializer.is_valid(): game_serializer.save() return JSONResponse(game_serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def handle(self, *args, **kwargs): file_name = kwargs['file'] file_path = os.path.join(getattr(settings, "GAMES_CSV_PATH"), file_name) cnt = 0 with open(file_path, 'r') as file: for row in csv.DictReader(file): if not row['genre'].strip(): row['genre'] = 'null' serialized_data = GameSerializer(data=row) if serialized_data.is_valid(): # save if the data has no errors serialized_data.save() cnt += 1 else: raise ValueError("File contains invalid record.") self.stdout.write(f"Successfully uploaded {cnt} records from {file_name}.")
def game_list(request): if request.method == 'GET': games = Game.objects.all() # many=True specifies that many instances have to be serialized, not just one games_serializer = GameSerializer(games, many=True) return JSONResponse(games_serializer.data) elif request.method == 'POST': game_data = JSONParser().parse(request) game_serializer = GameSerializer(data=game_data) if game_serializer.is_valid(): game_serializer.save() return JSONResponse(game_serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def games_list(request): """ List all code snippets, or create a new snippet. """ if request.method == 'GET': games = Game.objects.all() serializer = GameSerializer(games, many=True) return JSONResponse(serializer.data) elif request.method == 'POST': data = JSONParser().parse(request) serializer = GameSerializer(data=data) if serializer.is_valid(): serializer.save() return JSONResponse(serializer.data, status=201) return JSONResponse(serializer.errors, status=400)
def handle(self, *args, **options): data = json.load(options["file"]) game, created = Game.objects.get_or_create( id=data["id"], defaults={"start_datetime": None}) s = GameSerializer(game, data=data, context={"fix_times": options["fix_times"]}) if not s.is_valid(): raise CommandError(s.errors) update_game(game, s.validated_data) if created: print(f"Created game with id {data['id']}") else: print(f"Updated game with id {data['id']}")
def game_collection(self, request): if request.method == 'GET': games = Game.objects.all() game_serializer = GameSerializer(games, many=True) return JSONResponse(game_serializer.data) elif request.method == 'POST': game_data = JSONParser().parse(request) game_serializer = GameSerializer(data=game_data) if game_serializer.is_valid(): game_serializer.save() return JSONResponse(game_serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def game_list(request): if request.method == 'GET': games = Game.objects.all() games_serializer = GameSerializer(games, many=True) return Response(games_serializer.data) elif request.method == 'POST': game_serializer = GameSerializer(data=request.data) if game_serializer.is_valid(): try: games = Game.objects.get(name=request.data['name']) if bool(games): return Response( {"name": "game already exists in the database"}, status=status.HTTP_400_BAD_REQUEST) except: game_serializer.save() return Response(game_serializer.data, status=status.HTTP_201_CREATED) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def game_detail(request, pk): try: game = Game.objects.get(pk=pk) except Game.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': game_serializer = GameSerializer(game) return JSONResponse(game_serializer.data) elif request.method == 'PUT': game_data = JSONParser().parse(request) game_serializer = GameSerializer(game, data=game_data) if game_serializer.is_valid(): game_serializer.save() return JSONResponse(game_serializer.data) return JSONResponse(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': game.delete() return HttpResponse(status=status.HTTP_204_NO_CONTENT)
def game_list(request): if request.method == 'GET': # 데이터 조회 games = Game.objects.all() games_serializer = GameSerializer(games, many=True) # return JSONResponse(games_serializer.data) return Response(games_serializer.data) elif request.method == 'POST': # 데이터 생성 # game_data = JSONParser().parse(request) # games_serializer = GameSerializer(data = game_data) games_serializer = GameSerializer(data=request.data) # 위 2줄을 1줄로 대체 if games_serializer.is_valid(): games_serializer.save() # Http 200 : 정상처리 # return JSONResponse(games_serializer.data, status=status.HTTP_201_CREATED) return Response(games_serializer.data, status=status.HTTP_201_CREATED) # Http 400 : 정의되지 않은 작업 # return JSONResponse(games_serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(games_serializer.errors, status=status.HTTP_404_BAD_REQUEST)
def game_list(request): games = Game.objects.all() if request.method == 'GET': game_serializer = GameSerializer(games, many=True) return Response(game_serializer.data) elif request.method == 'POST': game_serializer = GameSerializer(data=request.data) game_listed = list_games(GameSerializer(games, many=True).data) if game_serializer.is_valid(): name = request.data['name'] if name in game_listed: return Response(game_serializer.errors, status=status.HTTP_409_CONFLICT) else: game_serializer.save() return Response(game_serializer.data, status=status.HTTP_201_CREATED) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def game_list(request): if request.method == 'GET': games = Game.objects.all() games_serializer = GameSerializer(games, many=True) return Response(games_serializer.data) elif request.method == 'POST': games_serializer = GameSerializer(data=request.data) if games_serializer.is_valid(): data = games_serializer.validated_data exists = Game.objects.filter(name=data['name']) if exists: return Response( {'detail': 'The name of this game already exists'}, status=status.HTTP_400_BAD_REQUEST) games_serializer.save() return Response(games_serializer.data, status=status.HTTP_201_CREATED) return Response(games_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def game_detail(request, pk): try: game = Game.objects.get(id=pk) except: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == "GET": game_serializer = GameSerializer(game) return Response(game_serializer.data, status=status.HTTP_200_OK) elif request.method == "PUT": game_serializer = GameSerializer(game, data=request.data) if game_serializer.is_valid(): try: games = Game.objects.filter(name=request.data['name']) if not game in games: return Response( {"name": "game already exists in the database"}, status=status.HTTP_400_BAD_REQUEST) else: game_serializer.save() return Response(game_serializer.data) except: game_serializer.save() return Response(game_serializer.data) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == "DELETE": utc = pytz.UTC date2 = utc.localize(datetime.now()) print(date2) # date1 = utc.localize(game.release_date) # print(date1) if game.release_date > date2: game.delete() return Response(status=status.HTTP_204_NO_CONTENT) return Response({"date_release": "Game has been released"}, status=status.HTTP_401_UNAUTHORIZED)
def game_detail(request, pk): try: game = Game.objects.get(pk=pk) except Game.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': game_serializer = GameSerializer(game) return Response(game_serializer.data) elif request.method == 'PUT': game_serializer = GameSerializer(game, data=request.data) games = Game.objects.all() game_listed = list_games(GameSerializer(games, many=True).data) if game_serializer.is_valid(): name = request.data['nome'] if name in game_listed: return Response(game_serializer.errors, status=status.HTTP_304_NOT_MODIFIED) else: game_serializer.save() return Response(game_serializer.data, status=status.HTTP_200_OK) return Response(game_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': current_date = date.today() game_date = game.release_date if current_date > game_date: return Response(status=status.HTTP_204_NO_CONTENT) else: game.delete() return Response(status=status.HTTP_410_GONE) return Response(status=status.HTTP_204_NO_CONTENT)
def game_detail(request, pk): """ Retrieve, update or delete a code snippet. """ try: game = Game.objects.get(pk=pk) except Game.DoesNotExist: return HttpResponse(status=404) if request.method == 'GET': serializer = GameSerializer(game) return JSONResponse(serializer.data) elif request.method == 'PUT': data = JSONParser().parse(request) serializer = GameSerializer(game, data=data) if serializer.is_valid(): serializer.save() return JSONResponse(serializer.data) return JSONResponse(serializer.errors, status=400) elif request.method == 'DELETE': game.delete() return HttpResponse(status=204)
def game_detail(request, pk): game = get_object_or_404(Game, pk=pk) if request.method == 'GET': games_serializer = GameSerializer(game) return Response(games_serializer.data) elif request.method == 'PUT': games_serializer = GameSerializer(game, data=request.data) if games_serializer.is_valid(): data = games_serializer.validated_data exists = Game.objects.filter(name=data['name']).exclude( name=game.pk) if exists: return Response( {'detail': 'The name of this game already exists'}, status=status.HTTP_400_BAD_REQUEST) games_serializer.save() return Response(games_serializer.data) return Response(games_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': now_aware = timezone.make_aware(datetime.now()) if game.release_date < now_aware: return Response( { 'detail': ("A game that has already been released can't be deleted." + f" This game was released in {game.release_date}") }, status=status.HTTP_400_BAD_REQUEST) game.delete() return Response(status=status.HTTP_204_NO_CONTENT)
print(game1.pk) print(game1.name) print(game1.created) print(game2.pk) print(game2.name) print(game2.created) game_serializer1 = GameSerializer(game1) print(game_serializer1.data) game_serializer2 = GameSerializer(game2) print(game_serializer2.data) renderer = JSONRenderer() rendered_game1 = renderer.render(game_serializer1.data) rendered_game2 = renderer.render(game_serializer2.data) print(rendered_game1) print(rendered_game2) json_string_for_new_game = '{"name":"Tomb Raider Extreme Edition","release_date":"2016-05-18T03:02:00.776594Z","game_category":"3D RPG","played":false}' json_bytes_for_new_game = bytes(json_string_for_new_game json_game_string , encoding="UTF-8") stream_for_new_game = BytesIO(json_bytes_for_new_game) parser = JSONParser() parsed_new_game = parser.parse(stream_for_new_game) print(parsed_new_game) new_game_serializer = GameSerializer(data=parsed_new_game) if new_game_serializer.is_valid(): new_game = new_game_serializer.save() print(new_game.name)