Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Django】django-quillを使ってテキストエディタフィールドを追加する方法

多くのオンライン試験サイトでは、テキスト入力や画像アップロードのためにテキストエディタが採用されています。中でもQuillは非常に人気の高いテキストエディタで、なんとモデルフィールドを提供しているため、特別な設定を行わなくてもデータベースに直接データを保存できます。

この記事では、Djangoでテキストエディタフィールドを作成する手順を解説します。

事前準備

まず、Djangoプロジェクトとアプリを作成します。アプリのurls.pyを読み込むなど、基本的な設定を済ませておきましょう。また、プロジェクトおよびアプリと同じ階層にmediaフォルダを作成してください。

次に、settings.pyに以下のコードを追加します。

INSTALLED_APPS = [ 'myapp.apps.MyappConfig', # Djangoアプリ 'django_quill' # モジュール名 ] . . . . .. MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'

続いて、django_quillパッケージをインストールします。

pip install django_quill

実装例

1. urls.py の設定

アプリのurls.pyに以下のコードを追加します。

from django.urls import path from . import views urlpatterns = [ path('', views.home,name="home")] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

ここでは、メインビューへのURLと、mediaフォルダへのURLを設定しています。

2. テンプレートの作成

アプリのディレクトリ内にtemplatesフォルダを作成し、その中にhome.htmlファイルを作成します。以下のコードを記述してください。

<!DOCTYPE html> <html> <head> {{ form.media }} {% include 'django_quill/media.html' %} <title> TUT </title> </head> <body> <form role="form" method="POST"> <legend>Form Title</legend> {% csrf_token %} {{form}} <button type="submit" class="btn btnprimary">Submit</button> </form> </html>

このテンプレートでは、バックエンドから送信されたフォームをレンダリングしています。{{ form.media }}{% include 'django_quill/media.html' %}によって、Quillエディタに必要なCSSやJavaScriptが読み込まれる点がポイントです。

3. views.py の設定

views.pyに以下のコードを追加します。

from django.shortcuts import render from django import forms from .models import another_model class NewForm(forms.ModelForm): class Meta: model=another_model fields="__all__" def home(request): if request.method =="POST": form=NewForm(request.POST) if form.is_valid(): form.save() form=NewForm() return render(request,'home.html',{"form":form})

ここではModelFormを作成し、homeビューでそれをレンダリングしています。POSTリクエストが送信された場合は、フォームデータをバリデーション(検証)してから保存する処理を行っています。

4. models.py の設定

models.pyに以下のコードを追加します。

from django.db import models from django_quill.fields import QuillField class another_model(models.Model): name = models.CharField(max_length=200) place = models.CharField(max_length=100) animal = models.CharField(max_length=100) thing = models.CharField(max_length=100) content = QuillField(blank=True)

モデルを作成し、その中にテキストエディタの内容を保存するためのQuillFieldフィールドを定義しています。これにより、エディタで入力したリッチテキストがそのままデータベースに格納されます。

出力結果

上記の手順を完了すると、ブラウザ上でQuillのリッチテキストエディタが表示され、入力した内容をデータベースに保存できるようになります。

  1. TkinterのEntryウィジェットにプレースホルダーを追加する方法

    Tkinterは、ボタン、テキスト、エントリ(Entry)、ダイアログなどのウィジェットを提供しており、これらを組み合わせることでGUIアプリケーションを効率的に開発できます。しかし、TkinterのEntryウィジェットには、標準ではプレースホルダーの機能が用意されていません。 プレースホルダーとは、入力欄にあらかじめ表示される仮のテキストのことで、「ここに何を入力すればよいか」をユーザーに伝える重要な役割を果たします。 本記事では、insert(挿入位置, テキスト) 関数を使って、Entryウィジェットにプレースホルダーを追加する方法を解説します。この関数は、第1引数に挿入位置(先頭なら

  2. Googleフォームの質問に説明文を追加する方法【PC・スマホ対応】

    Googleフォームで新しい質問を追加すると、説明文を入力するボックスが表示されず戸惑うことがあります。他の人が作成したフォームでは質問の下に説明が表示されているのに、自分のフォームでは追加できない——実は、スクリプトやアドオンをインストールする必要は一切ありません。設定から手動で説明文を追加するだけでOKです。 PCでGoogleフォームの質問に説明を追加する方法 まず、説明を追加したいGoogleフォームを開きます。このとき、フォームの編集権限を持っている必要があります。編集権限がないユーザーは、フォームを一切編集できませんので注意してください。 フォームが開いたら、編集したい質問