割烹エディターβ版リリースメモ7(エディター機能追加)

大体のリンクができてきたのでそろそろメインの機能を作っていきます。

といっても今回は、固定のリンクとモデルの作成までです。テンプレートの作成はまた後で。

アプリケーションの作成

python manage.py startapp editor

editorアプリケーションを作ります。

urlの設定

path('editor/',include('editor.urls')),

project/urls.pyに追加します。editor/urls.pyにも追加します。

app_name = 'editor'
urlpatterns = [
   path('keditor/', views.Keditor.as_view(), name='editor_keditor'),
   path('tategaki/', views.Tategaki.as_view(), name='editor_tategaki'),
   path('', views.Editor_List.as_view(), name='editor_list'),
]

今のところ、editor/に使えるエディターのリストを表示させて、editor/keditor/でプレーンの割烹エディター、editor/tategaki/で縦書き割烹変換を呼び出す感じにしておきます。

editorの種類が増えたら追加する感じで。

viewの設定

class Keditor(generic.TemplateView):
   template_name = 'editor/keditor.html'

class Tategaki(generic.TemplateView):
   template_name = 'editor/tategaki.html'

class Editor_List(generic.TemplateView):
   template_name = 'editor/editor_list.html'

この辺りは静的なのでテンプレートビューを継承して作りました。

templateの設定

{% extends 'base.html' %}
{% load static %}
{% block header %}
   <link rel="stylesheet" href="{% static 'editor/editor.css' %}"
{% endblock %}
{% block content %}
editorlist
{% endblock %}

とりあえず仮。

キャプチャ

URLもよさそうです。

modelの設定

私が割烹エディターを作ろうとした理由の一つが、活動報告のテンプレート化です。もとになるテンプレート記事を用意しておいて、そこから拡張して作れるようにします。そのためのテンプレートモデルを作ります。

・作成者
・タイトル
・カテゴリー
・キーワード
・本文(JSON)
・作成日
・更新日
・公開フラグ

要素としてはこんな感じかな。キーワードはいくつか登録できるようにしておきます。カテゴリーはブログ風、バトン、作品紹介、レビュー報告、宣伝、その他

from django.db import models
from django.conf import settings
from django.utils import timezone


class Category(models.Model):
   name = models.CharField('カテゴリー', max_length=32)

   def __str__(self):
       return self.name

class Keyword(models.Model):
   name = models.CharField('キーワード', max_length=32, unique=True)

   def __str__(self):
       return self.name

class Kappo(models.Model):
   author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
   title = models.CharField('タイトル', max_length=100)
   text = models.TextField('本文')
   category = models.ForeignKey(Category, on_delete=models.PROTECT)
   keywords = models.ManyToManyField(Keyword)
   created_date = models.DateTimeField(default=timezone.now)
   update_date = models.DateTimeField(blank=True, null=True)
   public = models.BooleanField()

   def __str__(self):
       return self.title

こんな感じかな。Kappoモデルを定義した。

管理サイトにも登録。

from django.contrib import admin
from .models import Category, Keyword, Kappo

admin.site.register(Category)
admin.site.register(Keyword)
admin.site.register(Kappo)

キャプチャ2

増えてるね。OK。

あとはスタイルを整えておきます。といっても単にフォームを並べるだけですが。

キャプチャ

キャプチャ2

構造は全部おなじにで、上側に入力フォーム、下にソースコードが出力されるtextareaを配置します。

小説家になろうのデザインと同じ感じにしておくと親和性が出るのであまり凝ったデザインにはしません。

ということで、エディターの追加が終わりました。

次はテンプレートの保存機能とテンプレートからの作成をできるようにしていきます。

良ければサポートお願いします。サポート費用はサーバー維持などの開発費に使わせていただきます。