4

使用 django-tinymce 我之前已经成功地将 TinyMCE 嵌入到管理员中。然而,将它嵌入前端形式似乎对我不起作用。

我有一个表格,它是一个模型表格。它不会添加任何额外的字段(“comment”和“statement”是唯一使用的字段,它们存在于模型中)。在我想使用 TinyMCE 的那种形式的文本区域字段“评论”上。我尝试了以下方法:

class EntryForm(forms.ModelForm):
    comment = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}, mce_attrs=TINYMCE_USER_CONFIG))

    class Meta:
        model = Entry
        fields = ['statement','comment',]

class EntryForm(forms.ModelForm):
    class Meta:
        model = Entry
        fields = ['statement','comment',]

    def __init__(self, *args, **kwargs):
        super(EntryForm, self).__init__(*args, **kwargs)
        self.fields['comment'].widget = TinyMCE(attrs={'cols': 80, 'rows': 15}, mce_attrs=TINYMCE_USER_CONFIG,)

class EntryForm(forms.ModelForm):

    class Meta:
        model = Entry
        fields = ['statement','comment',]

    class Media:
        js = ('/media/tinymce/jscripts/tiny_mce/tiny_mce.js',
                '/sitemedia/js/tinymce_setup.js',)

HEAD我放置的 html 标记中(在视图和模板{{ form.media }}中调用表单)。form我还在为管理员使用 Grappelli 和 Filebrowser。

有人可以解释一下我缺少什么或让它工作的过程吗?非常感谢!

4

2 回答 2

5

回答我自己的问题:最后一个选项有效。

问题是 `/sitemdia/js/tinymce_setup.js' 是一个 Grappelli 设置文件。这只能由管理员使用。我删除了那个位,所以我最终得到:

class Media:
    js = ('/media/tinymce/jscripts/tiny_mce/tiny_mce.js',
            '',)

在我添加的标题中

<script type="text/javascript">
        tinyMCE.init({
                mode: "textareas",
                theme: "simple"
        });
</script>

您也可以插入另一个可以工作的文件(例如其中包含 tinyMCE.init 代码),而不是删除安装文件。

这应该够了吧 :)。

于 2010-09-07T15:34:35.277 回答
0

经过一整天的搜索和尝试,我发现在 Django 应用程序上使用 tinyMCE 的前端版本要容易得多,通过 TinyMCE 的 CDN 交付

内容使用 HTML 标签保存,并且可以使用 html 标签显示给用户。

我试图使解决方案尽可能通用,即应该移动和引用 javascript。如果前端所见即所得的人将比您使用更多,您应该将索引中的 |safe 更改为清理功能,以确保安全/防止不必要的代码黑客攻击。

作为一个渲染 TinyMCE 的前端 CDN 不需要“安装”后端,viewspy 和 urls.py 包含在内,以向我们展示为用户提供他们输入的内容的视图。

链接到 CDN https://www.tinymce.com/download/

索引.html

    {% load staticfiles %}
<!-- <link rel="stylesheet" type="text/css" href="{% static 'wys/style.css' %}" /> -->
<!DOCTYPE html>
<html>
<head>
  <!-- Load TinyMCE from CDN -->
  <script src="//cdn.tinymce.com/4/tinymce.js"></script>
<!-- Set preference of what should be visible on init -->
<script>tinymce.init({
      selector: '#foo',
      height: 200,
      theme: 'modern',
      plugins: [
        'advlist autolink lists link image charmap print preview hr anchor pagebreak',
        'searchreplace wordcount visualblocks visualchars code fullscreen',
        'insertdatetime media nonbreaking save table contextmenu directionality',
        'emoticons template paste textcolor colorpicker textpattern imagetools codesample toc'
      ],
      toolbar1: 'undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
      toolbar2: 'print preview media | forecolor backcolor emoticons | codesample',
      image_advtab: true,
      templates: [
        { title: 'Test template 1', content: 'Test 1' },
        { title: 'Test template 2', content: 'Test 2' }
      ],
      content_css: [
        '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',
        '//www.tinymce.com/css/codepen.min.css'
      ]
     });
    </script>
    </head>



    <body>
    <h1>This is the homepage</h1>

      <h1>Below Are 2 Form Areas</h1>
    <form method="GET">
        Question: <input type="text" id="foo" name="search"><br/><br/><br/><br/><br/>
        Name: <input type="text"  id="bar" name="name"><br/><br/><br/><br/><br/><br/>
        <input type="submit" value="Submit" />
    </form><br/><br/>



    <h3>Display of question</h3>
    {% for question in questions %}
      <p>{{ question.query|safe}}</p>
      <p>{{ question.user_id|safe}}</p>
    {% endfor %}

    </body>

视图.py

from django.shortcuts import render
from .models import Queries

def MainHomePage(request):
    questions=None
    if request.GET.get('search'):
        search = request.GET.get('search')
        questions = Queries.objects.filter(query__icontains=search)

        name = request.GET.get('name')
        query = Queries.objects.create(query=search, user_id=name)
        query.save()

    return render(request, 'wys/index.html',{
        'questions': questions,
    })

应用程序中的 urls.py

from django.conf.urls import url

from . import views


app_name = 'wys'
urlpatterns = [
    url(r'^', views.MainHomePage, name='index'),
    # url(r'^', views.MainHomePage, name='index'),
]
于 2016-12-20T23:56:24.067 回答