【发布时间】:2018-02-04 16:43:58
【问题描述】:
我无法使用 django-markdownx 自动更新页面并提交更改。
我关注了this question and answer 并设法让 django-markdownx 在管理员中工作,并且在我看来。但是在我看来,编辑 textarea 并不会自动更新页面。
带有 django-markdownx 的管理页面正是我想要的,更新 textarea 会更新页面,但在你点击保存之前不会更新底层数据库字段。
然后我尝试将管理代码撕掉到我自己的视图中。
在我的视图/模板中,我有一个表单,textarea 类似于管理员表单。我还包括“/static/markdownx/js/markdownx.js”并将我的表单设置为与管理页面大致相似:
<form method="POST" action="">{% csrf_token %}
<div class="markdownx">
<textarea name="myfield" rows="10" cols="40" required="" data-markdownx-upload-urls-path="/markdownx/upload/" data-markdownx-editor-resizable="" class="markdownx-editor" id="id_myfield" data-markdownx-urls-path="/markdownx/markdownify/" data-markdownx-latency="500" data-markdownx-init="" style="transition: opacity 1s ease;">
{{ note.myfield }}
</textarea>
</div>
<div class="markdownx-preview">
{{ note.formatted_markdown|safe }}
</div>
</form>
这不起作用。
当您在管理员中编辑时,我会定期看到 /markdownx/markdownify/ 的请求,但不是我的。我不确定我是否应该做同样的事情,或者只是做一些定时的 javascript 页面刷新,并将表单中的所有数据传递回我的视图,然后再次重新渲染页面。
我无法完全理解 django-markdownx 文档。
更新:
文档seems to suggest 调用 MarkdownX() 应该进行初始化。
<script src="/static/markdownx/js/markdownx.js"></script>
...
<script type="text/javascript">
let parent = document.getElementsByClassName('markdownx');
let md = new MarkdownX( element, element.querySelector('.markdownx-editor'), element.querySelector('.markdownx-preview'));
</script>
但是当我尝试这个时,我明白了。
Uncaught ReferenceError: MarkdownX is not defined
我也没有在管理页面中看到任何这样的初始化。
是否有在你自己的视图中使用 django-markdownx 的示例,类似于在 admin 中的用法?
谢谢
磅数
【问题讨论】:
-
您是否在模板中包含
form.media?` -
@Inquilabi 我在初始化第二个编辑器时遇到相同的
Uncaught ReferenceError: MarkdownX is not defined错误。虽然,我的第一个编辑器工作正常。如何在同一页面上获取多个编辑器?
标签: django