我在谷歌应用程序中使用WMD,网站管理员可以更新网站页面,用户可以看到信息。
预览功能工作正常,我可以按照我想要的方式看到文本,但是当我在用户部分时,正在返回没有格式化的降价 - 我该如何解决这个问题?
这是我正在使用的代码
{% block content-left %}
{% if is_admin %}
<div id="content-bodyleft" class="wmd-preview"></div>
<form action="/admin/content/" method="post">
<textarea id="markdown" name="markdown" style="width: 400px; height: 200px;" >{{ page_content.html }}</textarea>
<input name="page" type="hidden" value="{{ request.path }}" />
<input type="submit" name="Save" />
</form>
<div class="wmd-output"></div>
<script type="text/javascript">
// to set WMD's options programatically, define a "wmd_options"
// object with whatever settings
// you want to override. Here are the defaults:
wmd_options = {
// format sent to the server. Use "Markdown" to return the markdown source.
output: "Markdown",
// line wrapping length for lists, blockquotes, etc.
lineLength: 40,
// toolbar buttons. Undo and redo get appended automatically.
buttons: "bold italic | link blockquote code image | ol ul heading hr",
// option to automatically add WMD to the first textarea found.
// See apiExample.html for usage.
autostart: true
};
</script>
<div class="wmd-output"></div>
<script type="text/javascript" src="/static/wmd/wmd.js"></script>
{% else %}
{{ page_content.html|markdown }}
{% endif %}
答案 0 :(得分:2)
发生这种情况的原因是因为Django表单只看到代表WMD编辑器的<textarea>
标记的值。该值是实际的降价,而不是您在预览中看到的呈现的HTML。
有几种方法可以在客户端或服务器上解决此问题......
保存表单后,使用python markdown模块将markdown转换为HTML,like this one
在客户端上提交表单后,让javascript将WMD <textarea>
标记的值替换为实际的HTML
选项#1可能是最简单的。这是一些示例代码......
import markdown
class MyModel(models.Model):
text = models.TextField()
def save(self, force_insert=False, force_update=False):
if self.text:
self.text = markdown.markdown(self.text)
super(MyModel, self).save(force_insert, force_update)
答案 1 :(得分:1)
这似乎与WMD.js无关,WMD.js是一个编辑器,与显示内容无关。
您不会发布模型,但看起来您正在将内容输入“markdown”字段,但显示不同的字段“html”。我认为你的模型中有一些东西 - 可能是保存 - 用转换后的标记填充html字段?
你还确定你看到原始降价,或者你看到原始HTML?我认为你需要unescape html输出:
{{ page_content.html|safe }}
答案 2 :(得分:0)
这是我的models.py文件
# models.py
from google.appengine.ext import db
class GoogleToken(db.Model):
session_token = db.StringProperty()
scope_url = db.StringProperty()
added_on = db.DateTimeProperty(auto_now_add=True)
class PageContent(db.Model):
html = db.TextProperty()
page = db.StringProperty()
class PageMedia(db.Model):
name = db.StringProperty()
type = db.StringProperty()
content = db.BlobProperty(default=None)
class Announcement(db.Model):
title = db.StringProperty()
content = db.TextProperty()
added_on = db.DateTimeProperty(auto_now_add=True)
,这是来自views.py
def content(request):
html = request.POST.get('markdown', None)
page = request.POST.get('page', None)
logging.debug(html)
logging.debug('Page: %s' % page)
query = PageContent.all().filter('page =', page)
page_content = query.get()
if page_content == None:
page_content = PageContent(html=html,page=page)
else:
page_content.html = html
为了帮助您了解正在发生的事情,例如我正在输入
Title
----
*Subtitle*
Text text text
并且看到了
副标题
文字文字
在预览中,但在输出中我看到了
Title----*Subtitle*Text text text
谢谢,感谢您对此的帮助。