V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Yan_6
V2EX  ›  问与答

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

  •  
  •   Yan_6 · 2012-08-06 17:10:04 +08:00 · 7070 次点击
    这是一个创建于 4498 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    1970-01-01 08:00:00 +08:00
    loading
        1
    loading  
       2012-08-06 17:25:19 +08:00
    这要看你所谓的纯文本是指什么了,你用的是非html语法吧,是markdown或者textile(可能拼错)这些?

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

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

    问题是上面所有的内容(包括html标签)都存储还是只存储文章(比如上面标签<p>里边的内容)?
    evlos
        4
    evlos  
       2012-08-06 18:12:31 +08:00   ❤️ 2
    数据库只存纯文本,包括 \n \r \t 之类的换行符和缩进。(就是 textarea 里面的内容)
    如果要显示,再去结合模版 render 出来,如果要生成静态页面的话,就把 render 生成的 html 保存到临时文件目录。
    别把 html 存数据库啊,太傻了那样子。否则修改模版什么的不累死人 - -。而且还占用空间。
    如果修改了模版的话,需要生成静态页面就再 render 一次就好,很方便的。
    html 不存数据库,一般只存到临时文件目录。
    纯文本存到数据库并以此为主。
    Yan_6
        5
    Yan_6  
    OP
       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
        6
    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
        7
    jean  
       2012-08-06 19:30:47 +08:00
    自己博客系统的话显然就用markdown了,都不用想,很成熟的解决方案
    Yan_6
        8
    Yan_6  
    OP
       2012-08-06 19:47:11 +08:00
    @loading 模板还是知道的>.<!噢,就是存储文章的那一部分。感谢!
    loading
        9
    loading  
       2012-08-06 19:51:02 +08:00
    我懂了,你用了WYSIWYG编辑器,想FCKeditor这种,然后你就茫然了 ^_^
    Yan_6
        10
    Yan_6  
    OP
       2012-08-06 20:08:27 +08:00
    @loading 恩,对!
    evlos
        11
    evlos  
       2012-08-06 20:51:16 +08:00
    @Yan_6 。。。。为。。。为神马要把代码写成这个样子。。。。
    CSS 就写到 .css 文件里面,没有必要不要用 style 标签,这。。这太糟糕了。。。
    (额,看到 @loading 回复原来你用了所见即所得编辑器。。。额,我个人比较抵触这个)

    啊啊,图片的话,那么一般都是用 <img 这样的 html 代码存到数据库里面。这个的确是例外。
    因为图片出现的位置是没有规则的,每篇文章都不一样,除非每篇文章是一样的,否则只能这样。
    或者如果不想这样,就用短代码,比如 [imgid=12] 放到纯文本当中。
    渲染(render)页面(就是把纯文本放到模版里面然后显示出来)的时候,用程序代码识别这段短代码,然后比如 12 是图片数据表里面需要被显示的图片的ID,那么就把短代码替换成显示图片的html代码这样子。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2816 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:36 · PVG 22:36 · LAX 06:36 · JFK 09:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.