web-dev-qa-db-ja.com

リッチテキスト形式の機能をDjango TextFieldに追加します

descriptionフィールドを含むDjangoモデルがあります:

class Product(models.Model):
    name = models.CharField(max_length="125")
    description = models.TextField()

class ProductForm(ModelForm):
    class Meta:
        model = Product
    def __init__(self, *args, **kwargs):
        super(ProductForm, self).__init__(*args, **kwargs)
        self.fields['description'].widget.attrs = { 'placeholder':'Description', 'rows':'10'}

以下のようにレンダリングしています

<html>
  <body>
     {{form.name}}
     {{form.description | linebreaks}}  
  </body>
</html>

したがって、上記のフィルターlinebreaksを使用すると、データを行の書式として取得できますが、説明フィールドにURL(www.google.co.in)を指定すると、クリック可能になります。 product detail pageのフロントエンド

フロントエンドのDjango説明フィールドにリッチテキストフォーマットを追加するにはどうすればよいですか?

Django-tinymce の使用を検討してください。
これにより、TinyMCEリッチテキストエディタをテキスト領域に簡単に統合できます。

Django wysiwigアプリのリスト

17

別の方法は、説明フィールドにHTMLを追加することです。

<a href="yourlink.com">your link</a> 

そして、セーフタグを使用してフロントエンドでアクセスできるようにします。

{{form.description | safe | linebreaks}}

安全タグを最初に配置してください。そうしないと機能しません。

2
David

私が知っているパーティーに遅れましたが、私が使用している別のオプションは、Wagtail管理者、具体的にはfrom wagtail.core.fields import RichTextFieldを使用することです。これにより、管理者は組み込みの非常に優れたリッチテキストエディタを利用できます。

基本的なDjangoモデルを作成し、モデルの一部としてRichTextFieldを使用すると、そのモデルをWagtailに登録でき、組み込みのWYSWIGを備えた非常に優れた編集インターフェイスを取得できます。詳細はこちら: https://docs.wagtail.io/en/v2.4/reference/contrib/modeladmin/index.html

1
marqpdx