Serializer API 를 통한 SAVE 기능

  1. serializer를 사용하기위해 serializer.py 생성

( 추후 웹에서 api get,post도 사용하기 위해 [ scraper_api ] 를 새로 생성하여 진행 )

( $ python manage.py startapp scraper_api )

2.settings.py에 serializer 기능들을 사용하기위해 INSTALLED_APPS 에추가

  1. crawler.py의 최종 결과를  json 형식으로 저장

  2. json 을 읽어와 database에 serializer 기능을 사용하여 저장하는 daily_process.py 생성

  3. (선택사항) 웹에서 사용하려면 urls.py와 views.py에 추가하여 사용

스크린샷 2023-05-14 오후 2.24.50.png

1. serializer를 사용하기위해 serializer.py 생성

class CommonSerializer(serializers.Serializer):
   class Meta :
       model = Common
       fields =  '__all__'
       abstract = True
class StationsSerializer(CommonSerializer):
   station = serializers.CharField()
   line = serializers.CharField()
  
   class Meta :
       model = Stations
       fields =  ['station','line']
       validators = [
           UniqueTogetherValidator(
               queryset=Stations.objects.all(),
               fields=['station', 'line']
           )
       ]
  
   def create(self, validated_data):
       return Stations.objects.create(**validated_data)
class DailyTrafficSerializer(CommonSerializer):
   station = serializers.CharField()
   line = serializers.CharField()
   people_in = serializers.IntegerField()
   people_out = serializers.IntegerField()
   date = serializers.DateTimeField()
  
  
   class Meta :
       model = DailyTraffic
       fields =  ['station','line','date','people_in','people_out']
       validators = [
           UniqueTogetherValidator(
               queryset=DailyTraffic.objects.all(),
               fields=['station','line','date']
           )
       ]
  
   def create(self, validated_data):
       return DailyTraffic.objects.create(**validated_data)

2.settings.py에 serializer 기능들을 사용하기위해 INSTALLED_APPS 에추가

INSTALLED_APPS = [
   ...
   'rest_framework',
   'scraper_api.apps.ScraperApiConfig',
  
]