我想用 py 写个博客,发博文希望用 md 编辑器,不清楚该怎么做
希望做过的朋友指点下,谢谢啦!
1
aszxqw 2015-11-25 17:41:16 +08:00
一般借助一些转换工具,比如 jekyll 。
比如这些代码就是 markdown 的: https://github.com/yanyiwu/blog 然后生成的博客是: http://yanyiwu.com/ |
2
bertonzh 2015-11-25 17:51:56 +08:00
题主说自己用 py 写博客,楼上怎么提到 jekyll 了。
博客里面用 markdown 没啥难度,最简单的你只需要一个 md to html 的库就行。这种库应该很多。 数据库存储就存 md 的源码,方便编辑。访问网页时取出来转换成 html 就可以。如果考虑性能可以缓存一下,或者干脆做两个字段。 至于编辑器,如果你前端比较差,先用 textarea 就可以。 V2EX 不就是 textarea 么。 愿意花时间折腾可以用 codemirror ,看看里面的文档,改改 codemirror 样式和配置,就是一个好用的 markdown 编辑器了。 |
3
wellsc 2015-11-25 17:51:57 +08:00
pip install markdown
|
4
ericls 2015-11-25 17:55:58 +08:00
|
5
zeroten 2015-11-25 18:35:44 +08:00
|
6
roychan 2015-11-25 19:11:15 +08:00
推荐一下 markdown2 这个库。
|
7
rebornix 2015-11-25 19:29:00 +08:00 via Android 1
@bertonzh 讲的挺全面的,赞一个。
如果要补充什么的话,就提一提一楼说的 Jekyll 。 Jekyll 是把 MD 转成 html ,然后你自行把 html 放到 nginx 这类的服务器即可。这种方式也被称为静态网页生成,对应的 Py 实现叫 Hyde 。优势在于不需要在用户访问页面时重复地把 MD 转成 html 。如果你确实希望做成动态渲染,利用楼上推荐的包就可以了。 想推广自己的网站可以理解,但好歹好好答题啊,楼上几个答非所问的,真看不下去。 |
8
le0rn0 OP @bertonzh 懂了,其实真正需要的就是个 md 的解析器就行了是吧?也就是把数据库里存的 md 源码解析成 html ,而像作业部落之类的这种编辑器只是起到一个方便写作的作用,在别的地方写好,直接复制进 textarea 中存进数据库是吧?
那请问下还有如果我想像 wordpress 一样,写作时用我自己集成的一个编辑器,该用什么比较好?知乎和简书的挺不错,可惜不开源。 谢谢啦! |
11
le0rn0 OP @rebornix 看了 2L 兄弟的回答基本明白了,我是想做动态的,把 md 渲染成 html 转换很耗性能吗?谢谢 o(^▽^)o
|
12
Drifter 2015-11-25 20:57:01 +08:00
不怎么消耗性能。
做博客的话,直接使用 pelican 框架也行啊~生成的静态网页 |
14
Kilerd 2015-11-25 21:08:33 +08:00
你是想怎么处理?
python 处理的话,用 `markdown` , `markdown2`, `misaka` 这些解析库就可以了,直接在 python 里面使用,缺点在于只用这个的话不能做成 WYSIWYW (所见即所得)功能。 流程如下: textarea 输入内容(markdown)-->存库-->取出-->解析库解析-->显示 另外一种就是就是用 javascript 来做,这个就要求写在 html 里面了,就是把原来的 textarea 框换成 markdown-editor, 至于这个 MK 编辑器怎么来, GitHub `markdown editor javascript` 就可以搜出很多来。 轻量级的倒是可以介绍一个 https://github.com/NextStepWebs/simplemde-markdown-editor 这个的流程: markdown-editor 输入内容(可以显示出效果) -->存库-->取出-->解析库解析-->显示 ------------ 后者的用户体验是比前者好的,代价就是在 html 中加载了多一些 js 和 css 如果你还追求使用性能的话, 那就在后者存库的时候,存两份数据,一份为 markdown 语法,一份为 html 语法(即通过解析库解析后的内容),这样显示就用 html 语法的那份, 编辑就用 markdown 语法的内容。 |
15
Starduster 2015-11-25 21:10:44 +08:00
@le0rn0 静态网页没漏洞,安全;轻,省系统资源
|
16
le0rn0 OP @Starduster 是不是有多少文章就生成多少静态 html 页?备份的时候是把他们全部下载下来吗
|
18
Starduster 2015-11-25 21:29:16 +08:00
@le0rn0 所以静态博客每次写一篇文章他就生成一堆 HTML ,改主题什么的也是把所有 HTML 重新生成一次。只是备份的话打包 HTML 当然可以,但是静态博客生成器应该自己有更优雅的导出方式,利用插件之类的连配置什么的一起导出
|
19
le0rn0 OP @Kilerd 现在已经完全明白了,多谢, simplemde-markdown-editor 似乎还有点问题,比如全(分)屏后工具栏样式会变成鼠标 cover 状,感觉知乎简书和作业部落的就很棒,要是能直接拿来用就好了。
|
20
caixiexin 2015-11-25 21:48:36 +08:00 2
几个月前用 python 练手写了个博客,主要用到这些东西,希望能帮到你:
python2.7 Flask ---》 python web 框架 jinja2 --》 python 页面模板库 mistune --》 Markdown python 渲染库 ,就是把 md 转换成 html 的东西 pygments --》 python 语法分析库,给转换出来的 html 博文做语法高亮的东东 jQuery2.x vue.js UIKit Nginx uWSGI ---》 python 的 wsgi 容器 七牛云存储 ---》放博客图片 DigitalOcean --》跑博客程序的 vps 服务器 Namesilo --》 域名服务 服务端基本模仿程序 廖雪峰老师 python2.7 教程写的 编辑博文的时候就像你说的现在 md 编辑器里编辑好,只接从后台把 markdown 贴进去发布。 博文发布后生成 html 文件,访问的时候直接访问 html ,算是假的静态吧- -。 说起来搭完之后一直没更新 ORZ 。。 |
21
caixiexin 2015-11-25 21:50:25 +08:00
markdown 编辑器作业部落的就挺好,现在也有桌面版了- -
https://www.zybuluo.com/mdeditor |
22
Kilerd 2015-11-25 21:58:34 +08:00
@le0rn0 一般来说,很少可以找到一款完全满足于你全部要求的 markdown-editor ,毕竟大家的需求都不一样,都需要自己去修改一下。
至于你所提到的两款,个人觉得还是太重了,不喜欢。 如果自己的 javascript 过得关的话,可以用以下库来自己写一个满足于自己的 CodeMirror CommonMark |
23
le0rn0 OP @caixiexin 谢谢!很大的帮助!现有如下问题希望能解惑:
1. jinja2 模板引擎已经很棒,为什么还要用 vue.js ? 2. UIKit 和 bootstrap 相比有哪些优势吗? 3. 对于 mistune 的渲染,我可以修改 css 吗?比如,想改改输出的字体、字号子类的。 谢谢!!! |
24
caixiexin 2015-11-25 22:22:12 +08:00
@le0rn0
1. 其实我主要还是用 vue.js 的,就一些基础页面用 jinja2 。 jinja2 是后端模板, vue.js 是前端模板,效果上还是有区别的。网速慢的时候,我用 vue.js 写的页面会先加载出个页面框架,然后异步去服务端取数据然后再在浏览器上渲染出来。 jinja2 的页面就不一样了,渲染是在服务端完成的,页面要么没有,要么一下就出来了 2. UIKit 感觉比 bootstrap 轻量,上手也很快,做小东西玩的话还是很不错的,样式风格小清新,我等前端苦手的福音 233333 3. mistune 渲染出的 html 没什么样式。 pygments 高亮处理后也只是给 html 加了些 class 。 至于这些 class 对应的样式,可以用引用其他 css 文件来覆盖。网上很多现成的 pygments css 都可以直接拿来用,我自己的就用了个 github-code-highlight.css |
25
rebornix 2015-11-25 22:27:53 +08:00 via Android
|
27
zhuangzhuang1988 2015-11-25 23:18:50 +08:00
其实可以客户端在线渲染的啊... http://facebook.github.io/react/docs/tutorial.html react 指南中就是这个..
|
28
binnchx 2015-11-26 13:09:25 +08:00
推荐 leanote ,支持富文本, markdown ,私有笔记,笔记私密分享和公开博客功能。
|