第一次做网站,想用python+django做自己的博客系统。想问一下,怎么样存储文章呢?纯文本还是连带html标签一起存储呢?各位都是怎么做的呢?

2012-08-06 17:10:04 +08:00
 Yan_6
7065 次点击
所在节点    问与答
11 条回复
loading
2012-08-06 17:25:19 +08:00
这要看你所谓的纯文本是指什么了,你用的是非html语法吧,是markdown或者textile(可能拼错)这些?

如果是的话,可以像project picky一样,都存下来,浏览的时候读取html,编辑时编辑你的文本。

如果不是,我不知道你指的是啥。。。
waredugu
2012-08-06 17:36:51 +08:00
text html各一份
Yan_6
2012-08-06 18:00:37 +08:00
@loading 纯文本就是文章内容。
假如html文件内容如下:
<!DOCTYPE HTML>
<html>
<head>.....</head>
<body>
<p>
文章内容。。。
</p>
</body>
</html>

问题是上面所有的内容(包括html标签)都存储还是只存储文章(比如上面标签<p>里边的内容)?
evlos
2012-08-06 18:12:31 +08:00
数据库只存纯文本,包括 \n \r \t 之类的换行符和缩进。(就是 textarea 里面的内容)
如果要显示,再去结合模版 render 出来,如果要生成静态页面的话,就把 render 生成的 html 保存到临时文件目录。
别把 html 存数据库啊,太傻了那样子。否则修改模版什么的不累死人 - -。而且还占用空间。
如果修改了模版的话,需要生成静态页面就再 render 一次就好,很方便的。
html 不存数据库,一般只存到临时文件目录。
纯文本存到数据库并以此为主。
Yan_6
2012-08-06 18:32:29 +08:00
@evlos 有道理。把html存数据库确实占用空间,而且影响服务器性能。不过当html结构比较繁杂的时候,似乎又不太好处理。比如带图片,又有css等。看下面例子,一片文章分好几个段落,每个段落的css样式还不一样,并且还带有图片。这个时候怎么存储?

<!DOCTYPE HTML>
<html>
<head>.....</head>
<body>
<p style="style1....">
第一段内容。
</p>
<img style="style2...." src="..."/>
<p style="style3....">
第二段内容。
</p>
<p style="style4....">
第三段内容。
</p>

</body>
</html>
loading
2012-08-06 19:28:17 +08:00
你是想每一页都不一样么?为了你便于理解是从<html>--</html>

如果是,那就两个都存。

如果不是,你也许还不知道“模板”这个东西。

随便找个博客程序,看下数据库吧,最好随意做个“皮肤”,你就懂了。

你理解错了。


正常是只存下面这些的:

<p style="style1....">
第一段内容。
</p>
<img style="style2...." src="..."/>
<p style="style3....">
第二段内容。
</p>
<p style="style4....">
第三段内容。
</p>


而且你会看到至少外面有这样的东西:
<div id="content">


</div>
jean
2012-08-06 19:30:47 +08:00
自己博客系统的话显然就用markdown了,都不用想,很成熟的解决方案
Yan_6
2012-08-06 19:47:11 +08:00
@loading 模板还是知道的>.<!噢,就是存储文章的那一部分。感谢!
loading
2012-08-06 19:51:02 +08:00
我懂了,你用了WYSIWYG编辑器,想FCKeditor这种,然后你就茫然了 ^_^
Yan_6
2012-08-06 20:08:27 +08:00
@loading 恩,对!
evlos
2012-08-06 20:51:16 +08:00
@Yan_6 。。。。为。。。为神马要把代码写成这个样子。。。。
CSS 就写到 .css 文件里面,没有必要不要用 style 标签,这。。这太糟糕了。。。
(额,看到 @loading 回复原来你用了所见即所得编辑器。。。额,我个人比较抵触这个)

啊啊,图片的话,那么一般都是用 <img 这样的 html 代码存到数据库里面。这个的确是例外。
因为图片出现的位置是没有规则的,每篇文章都不一样,除非每篇文章是一样的,否则只能这样。
或者如果不想这样,就用短代码,比如 [imgid=12] 放到纯文本当中。
渲染(render)页面(就是把纯文本放到模版里面然后显示出来)的时候,用程序代码识别这段短代码,然后比如 12 是图片数据表里面需要被显示的图片的ID,那么就把短代码替换成显示图片的html代码这样子。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/44404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX