TinyMCE 提交带有 HTML 标签的原始文本
TinyMCE submitting raw text with HTML tags
我正在使用表单中的 TinyMCE 文本区域来创建新博客 post;当我点击 "Submit" 时,我应该被重定向到一个新的博客页面,其中包含我在文本区域中输入的格式化内容。我实际得到的是带有 <p>
、<strong>
等标签的原始内容。
是不是配置有问题?这是代码:
我的模板中的 TinyMCE 配置 <head>
:
<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector:'textarea'
});
</script>
带有 TinyMCE 文本区域的表单:
<h1>New post</h1>
<form method="POST" class="progresstracker-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
查看相关代码处理新博客post:
def pt_detail(request, slug):
ptpost = get_object_or_404(Post, slug=slug)
return render(request, 'blog/pt_detail.html', {'ptpost': ptpost})
def progresstracker(request):
posts = Post.objects.order_by('published_date')
return render(request, 'blog/progresstracker.html', {'posts': posts})
def progresstracker_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
ptpost = form.save(commit=False)
ptpost.author = request.user
ptpost.published_date = timezone.now()
ptpost.save()
return redirect('pt_detail', slug=ptpost.slug)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, slug):
ptpost = get_object_or_404(Post, slug=slug)
if request.method == "POST":
form = PostForm(request.POST, instance=ptpost)
if form.is_valid():
ptpost = form.save(commit=False)
ptpost.author = request.user
ptpost.published_date = timezone.now()
ptpost.save()
return redirect('pt_detail', slug=ptpost.slug)
else:
form = PostForm(instance=ptpost)
return render(request, 'blog/post_edit.html', {'form': form})
要从 TinyMCE 获取内容,您必须使用编辑器函数 getContent()。我不知道 Django,但也许你应该使用隐藏的文本输入,其中保存了 TinyMCE 的内容:
<script type="text/javascript">
tinymce.init({
selector:'textarea.my_css'
});
function saveContent() {
var ed = tinymce.activeEditor;
$('#hidContents').val(ed.getContent());
}
</script>
<h1>New post</h1>
<form method="POST" class="progresstracker-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default" onclick="saveContent">Save</button>
<input id="hidContents" type="hidden" name="hidContents">
</form>
建议:
- 使用最新版本(v4.4.3)的TinyMCE
- 始终使用更具体的选择器,以确保您使用的是正确的文本区域 - 例如:
selector: 'textarea.my_css'
我遇到了 tinyMCE 和 Javascript 函数、媒体引用等的问题,最后在我 (1) 回到非常简单的 tinyMCE 代码(如下所示)时解决了我的问题, (2) 在对 tinyMCE 文本的实际引用中添加了“|safe”。
模板
<header>
.
.
<script src="//tinymce.cachefly.net/4.3/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector: 'textarea'
});
</script>
</header>
<body>
.
.
{% for post in posts %}
<h3><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h3>
<p style="font-size: 16px">{{ post.published_date|date:'M d, Y' }}</p>
{{ post.body|truncatewords:50|safe }}
<hr></hr>
{% endfor %}
.
.
</body>
我正在使用表单中的 TinyMCE 文本区域来创建新博客 post;当我点击 "Submit" 时,我应该被重定向到一个新的博客页面,其中包含我在文本区域中输入的格式化内容。我实际得到的是带有 <p>
、<strong>
等标签的原始内容。
是不是配置有问题?这是代码:
我的模板中的 TinyMCE 配置 <head>
:
<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector:'textarea'
});
</script>
带有 TinyMCE 文本区域的表单:
<h1>New post</h1>
<form method="POST" class="progresstracker-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
查看相关代码处理新博客post:
def pt_detail(request, slug):
ptpost = get_object_or_404(Post, slug=slug)
return render(request, 'blog/pt_detail.html', {'ptpost': ptpost})
def progresstracker(request):
posts = Post.objects.order_by('published_date')
return render(request, 'blog/progresstracker.html', {'posts': posts})
def progresstracker_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
ptpost = form.save(commit=False)
ptpost.author = request.user
ptpost.published_date = timezone.now()
ptpost.save()
return redirect('pt_detail', slug=ptpost.slug)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, slug):
ptpost = get_object_or_404(Post, slug=slug)
if request.method == "POST":
form = PostForm(request.POST, instance=ptpost)
if form.is_valid():
ptpost = form.save(commit=False)
ptpost.author = request.user
ptpost.published_date = timezone.now()
ptpost.save()
return redirect('pt_detail', slug=ptpost.slug)
else:
form = PostForm(instance=ptpost)
return render(request, 'blog/post_edit.html', {'form': form})
要从 TinyMCE 获取内容,您必须使用编辑器函数 getContent()。我不知道 Django,但也许你应该使用隐藏的文本输入,其中保存了 TinyMCE 的内容:
<script type="text/javascript">
tinymce.init({
selector:'textarea.my_css'
});
function saveContent() {
var ed = tinymce.activeEditor;
$('#hidContents').val(ed.getContent());
}
</script>
<h1>New post</h1>
<form method="POST" class="progresstracker-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default" onclick="saveContent">Save</button>
<input id="hidContents" type="hidden" name="hidContents">
</form>
建议:
- 使用最新版本(v4.4.3)的TinyMCE
- 始终使用更具体的选择器,以确保您使用的是正确的文本区域 - 例如:
selector: 'textarea.my_css'
我遇到了 tinyMCE 和 Javascript 函数、媒体引用等的问题,最后在我 (1) 回到非常简单的 tinyMCE 代码(如下所示)时解决了我的问题, (2) 在对 tinyMCE 文本的实际引用中添加了“|safe”。
模板
<header>
.
.
<script src="//tinymce.cachefly.net/4.3/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector: 'textarea'
});
</script>
</header>
<body>
.
.
{% for post in posts %}
<h3><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h3>
<p style="font-size: 16px">{{ post.published_date|date:'M d, Y' }}</p>
{{ post.body|truncatewords:50|safe }}
<hr></hr>
{% endfor %}
.
.
</body>