小村のポートフォリオサイト開発(9) DjangoRestFramework はてなブログの記事のデータ格納



目次

  1. 不要なmodel削除
  2. models作成
  3. views.blog.pyの内容をviews.entry.pyに移植
  4. はてな記事をentryに書き込み



記録

運用ルールの決定

  • APIで取得したデータを眺めながら、いくつか運用ルールを決めました

  • 今後の記事を書く際に気を付けたいと思います

    • 記事タイトルは最大100文字

      • それ以上の場合は切って格納
    • カテゴリは1記事につき1つ

      • 複数ある場合は最初の1つのみDBに格納



不要なmodels削除

  • これから本格的にmodelを用意するので、これまでテストで使用していたmodelを用済みです!

  • さくっと削除しましょう!

  • 下記の通り、Userモデルを削除し、紐づいていた処理を全て削除しました!

f:id:kom314_prog:20210817225300p:plain



models作成

  • ではでははてなブログの記事を格納するモデルを作っていくよ!

  • 一般的にこういった記事はEntryという名前が多いのでそれに習います

  • もともと存在していたしていたEntryモデルを下記の通り修正

from django.db import models

class Entry(models.Model):
    CHOICE_DRAFT = (('yes', '下書き'), ('no', '公開'))
    entry_id = models.AutoField(verbose_name='記事Id', primary_key=True)
    hatena_entry_id = models.BigIntegerField(verbose_name='はてな記事Id', unique=True)
    category = models.CharField(verbose_name='カテゴリ', max_length=100, null=True, blank=True, default='')
    title = models.CharField(verbose_name='タイトル', max_length=200, null=True, blank=True, default='')
    summary = models.CharField(verbose_name='サムネイル文', max_length=1000, null=True, blank=True, default='')
    content_md = models.TextField(verbose_name='内容_MarkDown', null=True, blank=True, default='')
    content_html = models.TextField(verbose_name='内容_HTML', null=True, blank=True, default='')
    draft = models.CharField(verbose_name='下書き区分', max_length=10, choices=CHOICE_DRAFT, null=True, blank=True, default='yes')
    published_at = models.DateTimeField(verbose_name='公開日時', null=True, blank=True)
    edited_at = models.DateTimeField(verbose_name='作成日時', null=True, blank=True)
    updated_at = models.DateTimeField(verbose_name='更新日時', null=True, blank=True)

  class Meta:
        db_table = 'entry'


  • それからserializers/entry.pyも下記の通り修正
# coding: utf-8

from rest_framework import serializers

from ..models import Entry


class EntrySerializer(serializers.ModelSerializer):
    class Meta:
        model = Entry
        fields = '__all__'


f:id:kom314_prog:20210817225611p:plain



views.blog.pyの内容をviews.entry.pyに移植

  • はてなブログAPIを呼び出すviews.blog.pyの処理をentry.pyに移植します

  • そして用済みになったviews.blog.pyはおさらば!!!

  • だいぶ構成がすっきりしました!

f:id:kom314_prog:20210817230414p:plain
f:id:kom314_prog:20210817230517p:plain



はてな記事をentry用に加工

  • メインの処理!

  • 取得したはてな記事をEntryモデル用に加工するよ

  • entry_idを取得した時点で時間が来てしまったので続きは次に回すよ!

f:id:kom314_prog:20210817233946p:plain



おわりに

  • 中途半端!!!

  • entryに登録までやりたかったけどできませんでした!

  • 次がんばるぞ~~~!

  • ではでは、ちゃお~~~!