前提・実現したいこと
Macで開発を行なっています。(Python3系、Django)
CreateViewのFormで文字を入力した後、その文字を画像に書き込み、同じページにプレビューとして表示させたいです。
ただ、どうリターンさせれば表示できるのかがわかりません。
自身で調べた結果、Ajaxを使えばできるのかと考えていますが、そもそも画像を生成することへの理解も薄いのでご教授いただければと思い質問します。
教えていただきたいことをまとめると、
・エラーの解決
・画像表示方法
・変なコードの指摘
・今後、書くべき機能(Ajax?)
です。一部でも構いません。
お手数おかけしますが、ご教授、よろしくお願いします。
画像生成は以下を参考にし、文字を縦書きを目指しています。
https://qiita.com/masushin/items/fbeb9018c9b17fe4d244
発生している問題・エラーメッセージ
TypeError at /create unsupported operand type(s) for +: 'DeferredAttribute' and 'DeferredAttribute'
multiline_textの引数に"こんにちは"に変更して試した場合↓
KeyError at /create 'setting text direction or font features is not supported without libraqm'
該当のソースコード
以下から変更を加えたいです。上記の参考URLをコピペし、少し変更した形です。
Python
1class WordCreateView(CreateView): 2 model = WordModel 3 form_class = WordForm 4 5 #@require_POST <--必要? 6 def form_valid(self, form): 7 img = Image.new('RGB', (200, 300), (215, 215, 220, 255)) 8 fnt = ImageFont.truetype("./static/fonts/Hannari.otf", 24) 9 t = WordModel.word + WordModel.name # <--formからデータをもらいたい。 10 d = ImageDraw.Draw(img) 11 d.multiline_text((120, 20), t, spacing=24, font=fnt, fill=(0, 0, 0, 255),direction="ttb") 12 img.show() # <--同じ画面に表示させたい(プレビュー的な)
またModel.pyは以下です。
from django.db import models class WordModel(models.Model): word = models.CharField(verbose_name='文言', max_length=255) name = models.CharField(verbose_name="名前", max_length=20)
よろしくお願いします。
あなたの回答
tips
プレビュー