Python 大规模杀伤性武器预览版不';输出不匹配

Python 大规模杀伤性武器预览版不';输出不匹配,python,django,google-app-engine,markdown,wmd,Python,Django,Google App Engine,Markdown,Wmd,我在谷歌应用程序中使用WMD,网站管理员可以更新网站页面,用户可以看到信息 预览功能工作正常,我可以按我希望的方式查看文本,但是当我在用户部分时,标记返回时没有格式-我如何解决这个问题 这是我正在使用的代码 {% block content-left %} {% if is_admin %} <div id="content-bodyleft" class="wmd-preview"></div> &

我在谷歌应用程序中使用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 %}
{%block content left%}
{%if是_admin%}
{{page_content.html}
//要以编程方式设置WMD选项,请定义“WMD_选项”
//对象具有任何设置
//你想要覆盖。以下是默认设置:
大规模杀伤性武器选项={
//发送到服务器的格式。使用“标记”返回标记源。
输出:“降价”,
//列表、块引号等的换行长度。
线路长度:40,
//工具栏按钮。撤消和重做将自动追加。
按钮:“粗体斜体|链接块代码图像| ol ul标题hr”,
//选项自动将WMD添加到找到的第一个文本区域。
//有关用法,请参见apexample.html。
自动启动:正确
};
{%else%}
{{page_content.html | markdown}
{%endif%}

这似乎与WMD.js无关,后者是一个编辑器,与显示内容无关

您没有发布您的模型,但看起来您正在将内容输入“markdown”字段,但显示了另一个字段“html”。我假设您的模型中有某种东西—可能是在保存时—用转换后的标记填充html字段

你确定你看到的是原始的降价,还是原始的HTML?我假设您需要取消html输出的显示:

{{ page_content.html|safe }}

这似乎与WMD.js无关,WMD.js是一个编辑器,与显示内容无关

您没有发布您的模型,但看起来您正在将内容输入“markdown”字段,但显示了另一个字段“html”。我假设您的模型中有某种东西—可能是在保存时—用转换后的标记填充html字段

你确定你看到的是原始的降价,还是原始的HTML?我假设您需要取消html输出的显示:

{{ page_content.html|safe }}

这是我的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 

谢谢,我非常感谢你在这方面的帮助

这是我的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 

谢谢,我非常感谢你在这方面的帮助

发生这种情况的原因是Django表单只看到代表WMD编辑器的
标记的值。该值是实际的标记,而不是预览中看到的呈现HTML

有几种方法可以解决这个问题,在客户端或服务器上

  • 保存表单时,在服务器上使用python标记模块将标记转换为HTML

  • 在客户端提交表单时,让javascript将WMD
    标记的值替换为实际的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)
    

    发生这种情况的原因是Django表单只看到代表WMD编辑器的
    标记的值。该值是实际的标记,而不是预览中看到的呈现HTML

    有几种方法可以解决这个问题,在客户端或服务器上

  • 保存表单时,在服务器上使用python标记模块将标记转换为HTML

  • 在客户端提交表单时,让javascript将WMD
    标记的值替换为实际的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)
    

    我已经检查了wmd.js,它被设置为output HTML alsoI我已经检查了wmd.js,它被设置为output HTML ALSOTANKS,对于这个有意义的响应-但是我应该在哪里安装这个代码?感谢这个有意义的响应-但是我应该在哪里安装这个代码?