我有一个由django驱动的网站。目前,所有的文本字段都只是采用原始HTML的普通老式文本输入。我没有花哨的编辑器或其他东西。我想开始使用Markdown和WMD,让每个人的事情变得更容易。
我是否必须运行某种脚本来遍历数据库中的每个文本字段,以便将所有HTML转换为markdown?如果我通过markdown过滤器运行HTML,它会在另一端得到相同的结果吗?WMD编辑器会从服务器读取HTML并将其转换为Markdown以供用户编辑吗?
这里正确的行动方向是什么?
发布于 2009-08-12 14:30:50
显然,将旧的HTML转换为markdown是完全不必要的。我将django.contrib.markup.markdown过滤器应用到我的模板中,遗留数据库记录中的HTML被直接传递。非遗留记录中的Markdown也被正确呈现。
当然,我的web应用程序不允许用户修改这些字段,所以让HTML直接通过是可以的。如果这是一个用户可编辑的字段,比如评论或wiki,那么这个解决方案是不够的。您必须将safe参数传递给markdown模板筛选器,这将剥离所有HTML,并且一些HTML到markdown的转换对于用HTML编写的遗留帖子是必要的。
在这种情况下,另一种解决方案是编写包装markdown筛选器的新模板筛选器。它将允许旧的HTML帖子通过,但将安全标记过滤器应用于非遗留帖子。
发布于 2009-08-11 03:10:56
正如我在your other question中提到的,使用markdown时的一个好模式是在数据库中以markdown和html格式存储文本。这样,你就不需要在每次浏览页面时都转换成html,而且在管理中编辑原始的markdown也很容易。
例如,博客应用程序可能具有
class BlogPost(models.Model):
...
body = models.TextField(help_text='Use Markdown syntax.')
#field to store generated html
body_html = models.Textfield(editable=False, blank=True)
...
def save(self):
body_html=markdown(self.body)
super(BlogPost, self).save()
...然后,在模板中,您可以使用{{body_html|safe}}。
我希望这能让你对如何改变你的模型有一个想法。对于如何处理遗留的html数据,我恐怕没有什么建议。
发布于 2009-08-11 02:36:00
WMD不做Html- to - markdown,只有反之亦然;你可以用html2text将HTML转换为markdown。默认情况下,WMD只使用您的第一个文本区域作为标记编辑器,但您可以覆盖它并添加预览--只需遵循WMD附带的简单示例中的说明即可。API无论如何都在发生变化(值得肯定的是,作者对此并不神秘),因为整个事物都转向了一个更真正的开源概念,所以现在不值得详细解释它,也不值得尝试任何花哨的东西!
https://stackoverflow.com/questions/1258153
复制相似问题