<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>天地一沙鸥 &#187; vicalloy的庄家</title>
	<atom:link href="http://vik.haoluobo.com/blog/index.php/category/vicalloy%e7%9a%84%e5%ba%84%e5%ae%b6/feed/" rel="self" type="application/rss+xml" />
	<link>http://vik.haoluobo.com/blog</link>
	<description>to be continue....</description>
	<lastBuildDate>Mon, 26 Jul 2010 10:45:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>发布一个Django的论坛系统LBForum（开源、带演示）</title>
		<link>http://vik.haoluobo.com/blog/index.php/2010/02/%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aadjango%e7%9a%84%e8%ae%ba%e5%9d%9b%e7%b3%bb%e7%bb%9flbforum%ef%bc%88%e5%bc%80%e6%ba%90%e3%80%81%e5%b8%a6%e6%bc%94%e7%a4%ba%ef%bc%89/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2010/02/%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aadjango%e7%9a%84%e8%ae%ba%e5%9d%9b%e7%b3%bb%e7%bb%9flbforum%ef%bc%88%e5%bc%80%e6%ba%90%e3%80%81%e5%b8%a6%e6%bc%94%e7%a4%ba%ef%bc%89/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 13:18:09 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[lbforum]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2010/02/%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aadjango%e7%9a%84%e8%ae%ba%e5%9d%9b%e7%b3%bb%e7%bb%9flbforum%ef%bc%88%e5%bc%80%e6%ba%90%e3%80%81%e5%b8%a6%e6%bc%94%e7%a4%ba%ef%bc%89/</guid>
		<description><![CDATA[简介 LBForum 用django开发的论坛系统，演示地址为：http://vik.haoluobo.com/lbforum/ 项目的地址为：http://github.com/vicalloy/LBForum 界面部分抄的 FluxBB(一个开源的PHP论坛 http://fluxbb.org/ )。 虽然Django写的论坛也不少，不过还真没什么好用的。 大多Django论坛都是独立的app，而且不少还缺模板，想我这样有经验的Django用户要跑起来都觉得麻烦，其他普通用户就更别说了。 LBForum主要注重部署的方便性和易用性，功能方面目前还比较简单。 LBForum一开始就是以整站的形式提供，所以以LBForum做为基础项目进行二次开发是很容易的。 同时LBForum的开发尽量遵照Django可复用app原则，因此即使需要将LBForum做为独立的app集成到其他项目也并不会太难。 主要功能 目前功能还比较简单，而且还有些小问题有待修正。 论坛分类，分版块 发帖，回帖 BBCode支持 置顶贴 使用django admin提供论坛管理功能 用开发服务器把LBForum跑起来 先把代码down下来。LBForum托管在github上，http://github.com/vicalloy/LBForum 。如果你没有安装git，你可以直接用界面右上方的download source功能下载代码。 运行\scripts\create_lbforum_env.py初始化lbforum的python虚拟环境。该脚本会自动创建一个python的虚拟环境并使用easy_install安装对应的依赖包，同时将一些依赖包解压到对应的目录中。 注：django使用的是svn版本，所以机器上必须要安装有SVN，不然脚本会运行失败。如果因为由于svn的问题导致脚本运行失败，可以运行lbforum_env.bat进入lbforum环境，手动安装django的svn版本。 环境初始化好后，运行lbforum_env.bat进入lbforum环境 运行%mg% syncdb初始化数据库 运行%mg% runserver启动django开发服务器 进入admin，创建论坛分类和版块 进入版块发帖 LBForum的目录结构说明 &#124;+lbforum_env/#lbforum运行的python虚拟环境，运行create_lbforum_env.py后自动创建 &#124;+requirements/#lbforum用的第三方库和app，运行的时候会将该目录加到python路径 &#124;~scripts/#工程相关脚本 &#124; &#124;-create_lbforum_env.py#初始化python虚拟环境，并自动安装easy_install/django依赖库 &#124; &#124;-helper.py#提供其他脚本所需的辅助函数 &#124; `-lbforum_env.bat*#启动lbforum运行的虚拟环境及，并为lbforum的manage.py提供快捷方式%mg%，比如初始化数据库%mg% syncdb &#124;~sites/#站点配置/模板/静态文件 &#124; `~default/#默认站点 &#124;&#160;&#160; &#124;+static/#静态资源文件，如css等 &#124;&#160;&#160; &#124;+templates/#Django模板目录 &#124;&#160;&#160; &#124;+templates_plus/#Django模板目录，用户将自己重写过的目标放到该目录 &#124;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<h4>简介</h4>
<p>LBForum 用django开发的论坛系统，演示地址为：<a href="http://vik.haoluobo.com/lbforum/">http://vik.haoluobo.com/lbforum/</a>     <br />项目的地址为：<a href="http://github.com/vicalloy/LBForum">http://github.com/vicalloy/LBForum</a>     <br />界面部分抄的 FluxBB(一个开源的PHP论坛 <a href="http://fluxbb.org/">http://fluxbb.org/</a> )。     <br />虽然Django写的论坛也不少，不过还真没什么好用的。     <br />大多Django论坛都是独立的app，而且不少还缺模板，想我这样有经验的Django用户要跑起来都觉得麻烦，其他普通用户就更别说了。     <br />LBForum主要注重部署的方便性和易用性，功能方面目前还比较简单。     <br />LBForum一开始就是以整站的形式提供，所以以LBForum做为基础项目进行二次开发是很容易的。     <br />同时LBForum的开发尽量遵照Django可复用app原则，因此即使需要将LBForum做为独立的app集成到其他项目也并不会太难。 </p>
<h4>主要功能</h4>
<p>目前功能还比较简单，而且还有些小问题有待修正。 </p>
<ol>
<li>论坛分类，分版块 </li>
<li>发帖，回帖 </li>
<li>BBCode支持 </li>
<li>置顶贴</li>
<li>使用django admin提供论坛管理功能</li>
</ol>
<h4>用开发服务器把LBForum跑起来</h4>
<ol>
<li>先把代码down下来。LBForum托管在github上，<a href="http://github.com/vicalloy/LBForum">http://github.com/vicalloy/LBForum</a> 。如果你没有安装git，你可以直接用界面右上方的download       <br />source功能下载代码。 </li>
<li>运行\scripts\create_lbforum_env.py初始化lbforum的python虚拟环境。该脚本会自动创建一个python的虚拟环境并使用easy_install安装对应的依赖包，同时将一些依赖包解压到对应的目录中。      <br />注：django使用的是svn版本，所以机器上必须要安装有SVN，不然脚本会运行失败。如果因为由于svn的问题导致脚本运行失败，可以运行lbforum_env.bat进入lbforum环境，手动安装django的svn版本。 </li>
<li>环境初始化好后，运行lbforum_env.bat进入lbforum环境 </li>
<li>运行%mg% syncdb初始化数据库 </li>
<li>运行%mg% runserver启动django开发服务器 </li>
<li>进入admin，创建论坛分类和版块 </li>
<li>进入版块发帖 </li>
</ol>
<h4>LBForum的目录结构说明</h4>
<p>|+lbforum_env/#lbforum运行的python虚拟环境，运行create_lbforum_env.py后自动创建    <br />|+requirements/#lbforum用的第三方库和app，运行的时候会将该目录加到python路径     <br />|~scripts/#工程相关脚本     <br />| |-create_lbforum_env.py#初始化python虚拟环境，并自动安装easy_install/django依赖库     <br />| |-helper.py#提供其他脚本所需的辅助函数     <br />| `-lbforum_env.bat*#启动lbforum运行的虚拟环境及，并为lbforum的manage.py提供快捷方式%mg%，比如初始化数据库%mg%     <br />syncdb     <br />|~sites/#站点配置/模板/静态文件     <br />| `~default/#默认站点     <br />|&#160;&#160; |+static/#静态资源文件，如css等     <br />|&#160;&#160; |+templates/#Django模板目录     <br />|&#160;&#160; |+templates_plus/#Django模板目录，用户将自己重写过的目标放到该目录     <br />|&#160;&#160; `-&#8230;&#8230;     <br />|~src/#django的app目录     <br />| |+account/#account相关app。具体站点通常会对用户中心进行定制，所以该app在实际应用中很可能需要针对实际情况进行修改。     <br />| |+djangohelper/#一些django的辅助函数等，     <br />| |+lbforum/#lbforum的主app，论坛功能都在改app中     <br />| |+lbregistration/#registration app的lbforum扩展，主要去掉邮件地址认证功能     <br />| |+onlineuser/#显示在线用户的app（可复用的django app，可脱离lbforum单独使用）     <br />| `+simpleavatar/#头像功能的app（可复用的django app，可脱离lbforum单独使用，依赖djangohelper）     <br />|+tools/#工程用到的辅助工具，目前只有一个virtualenv的脚本 </p>
<h4>注：</h4>
<ol>
<li>由于计划在以后做i18n，所以目前只提供英文界面 </li>
<li>django的错误提示是显示在字段后面，fluxbb的错误全部都显示在表单前面。由于模板没有调好，所以目前按照fluxbb的方式显示错误，所以错误显示有些不太正常。 </li>
<li>bbcode的输入框本想做成自适应大小的，不过也调得有些问题，所以现在输入框的大小固定。 </li>
<li>文档&#8230; ，感觉好难写-_-，目前文档不全（项目中没有带任何的文档），日后补上。 </li>
<li>应用程序的目录结构主要查看pinax</li>
<li>simpleavatar模块部分代码来自django-avatar</li>
<li>依赖包除用easy_install在线安装的外，尽量使用zip包的方式附带在项目中，减少安装依赖包的困难。</li>
<li>远程部署脚本计划使用fabric，但fabric本身安装比较麻烦，所暂未处理。</li>
<li>项目最早放在googlecode，不过感觉github的功能更强些，所以移了过去。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2010/02/%e5%8f%91%e5%b8%83%e4%b8%80%e4%b8%aadjango%e7%9a%84%e8%ae%ba%e5%9d%9b%e7%b3%bb%e7%bb%9flbforum%ef%bc%88%e5%bc%80%e6%ba%90%e3%80%81%e5%b8%a6%e6%bc%94%e7%a4%ba%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>url_helper简化Django的url配置</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/06/url_helper%e7%ae%80%e5%8c%96django%e7%9a%84url%e9%85%8d%e7%bd%ae/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/06/url_helper%e7%ae%80%e5%8c%96django%e7%9a%84url%e9%85%8d%e7%bd%ae/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 11:56:07 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/06/url_helper%e7%ae%80%e5%8c%96django%e7%9a%84url%e9%85%8d%e7%bd%ae/</guid>
		<description><![CDATA[django的url采用正则表达式进行配置，虽然强大却也广为诟病。反对者们认为django的url配置过于繁琐，且不支持默认的路由功能。 我倒觉得还好，只是如果觉得不爽，为什么不自己小小的hack一下，反正也就几行代码的事。 在这个背景下，我整了这个url_helper，利用url_helper可以简化配置和实现url的默认路由。所谓的url_helper其实就只有url_helper.py一个文件，使用的时候只想要import就可以。 url_helper的具体用法请参考具体的例子： url_helper下载/范例 下面对使用方法做个简单的说明。 url的默认路由 from url_helper import execute, url_ import views &#160; urlpatterns += patterns&#40;'', url&#40;r'^(?P&#60;urls&#62;.*)', execute, &#123;'views': views&#125;&#41;, &#41; 在urls.py里增加如下配置，其中views为需要进行路由的views模块。url的规则为 /action/param1/param2/…/ 。 例如： #/edit/4/ &#160; def edit&#40;request, n=&#34;id&#34;&#41;: html = &#34;&#34;&#34; edit object: %s&#34;&#34;&#34; % n return HttpResponse&#40;html&#41; 在没有指定action的时候默认使用的action为index。 提供函数url_简化url配置 仿照ROR的做法，参数用”:”标识。 例如： url_(r&#8217;/space/:username/:tag/&#8217;, views.url_), 对应的django url配置为url(r&#8217;^space/(?P&#60;username&#62;[^/]+)/(?P&#60;tag&#62;[^/]+)/$&#8217;, views.url_), #url_(r’/space/:username/:tag/’, views.url_), #/space/vicalloy/just/ &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>django的url采用正则表达式进行配置，虽然强大却也广为诟病。反对者们认为django的url配置过于繁琐，且不支持默认的路由功能。</p>
<p>我倒觉得还好，只是如果觉得不爽，为什么不自己小小的hack一下，反正也就几行代码的事。</p>
<p>在这个背景下，我整了这个url_helper，利用url_helper可以简化配置和实现url的默认路由。所谓的url_helper其实就只有url_helper.py一个文件，使用的时候只想要import就可以。</p>
<p>url_helper的具体用法请参考具体的例子：</p>
<p><b><a href="http://vik.haoluobo.com/blog/wp-content/uploads/2009/06/url_helper.zip">url_helper下载/范例</a></b></p>
<p>下面对使用方法做个简单的说明。</p>
<h4>url的默认路由</h4>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:Courier New, Courier, Monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> url_helper <span style="color: #ff7700;font-weight:bold;">import</span> execute, url_
<span style="color: #ff7700;font-weight:bold;">import</span> views
&nbsp;
urlpatterns += patterns<span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span>,
    url<span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'^(?P&lt;urls&gt;.*)'</span>, execute, <span style="color: black;">&#123;</span><span style="color: #483d8b;">'views'</span>: views<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>,
<span style="color: black;">&#41;</span></pre></div></div>

<p>在urls.py里增加如下配置，其中views为需要进行路由的views模块。url的规则为 /action/param1/param2/…/ 。</p>
<p>例如：</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:Courier New, Courier, Monospace;"><span style="color: #808080; font-style: italic;">#/edit/4/</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> edit<span style="color: black;">&#40;</span>request, n=<span style="color: #483d8b;">&quot;id&quot;</span><span style="color: black;">&#41;</span>:
    html = <span style="color: #483d8b;">&quot;&quot;&quot; edit object: %s&quot;&quot;&quot;</span> <span style="color: #66cc66;">%</span> n
    <span style="color: #ff7700;font-weight:bold;">return</span> HttpResponse<span style="color: black;">&#40;</span>html<span style="color: black;">&#41;</span></pre></div></div>

<p>在没有指定action的时候默认使用的action为index。</p>
<h4>提供函数url_简化url配置</h4>
<p>仿照ROR的做法，参数用”:”标识。</p>
<p>例如：</p>
<p>url_(r&#8217;/space/:username/:tag/&#8217;, views.url_), 对应的django url配置为url(r&#8217;^space/(?P&lt;username&gt;[^/]+)/(?P&lt;tag&gt;[^/]+)/$&#8217;, views.url_),</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:Courier New, Courier, Monospace;"><span style="color: #808080; font-style: italic;">#url_(r’/space/:username/:tag/’, views.url_), </span>
<span style="color: #808080; font-style: italic;">#/space/vicalloy/just/</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> url_<span style="color: black;">&#40;</span>request, username, tag<span style="color: black;">&#41;</span>:
    html = <span style="color: #483d8b;">&quot;&quot;&quot; username: %s &lt;br/&gt; tag: %s&quot;&quot;&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>username, tag<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> HttpResponse<span style="color: black;">&#40;</span>html<span style="color: black;">&#41;</span></pre></div></div>

<h4>url_helper的完整代码</h4>
<p>就如前面说的，代码非常少。不过实际应用的话，应当还需要做一些扩展。</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:Courier New, Courier, Monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: UTF-8 -*-</span>
<span style="color: #ff7700;font-weight:bold;">from</span> django <span style="color: #ff7700;font-weight:bold;">import</span> http
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">conf</span>.<span style="color: black;">urls</span>.<span style="color: black;">defaults</span> <span style="color: #ff7700;font-weight:bold;">import</span> url
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> execute<span style="color: black;">&#40;</span>request, urls, views<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;
    urls [methodName/]param1/param2/.../
    methodName default index
    &quot;&quot;&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> get_method<span style="color: black;">&#40;</span>views, methodName<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">getattr</span><span style="color: black;">&#40;</span>views, methodName<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">Exception</span>, e:
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">None</span>
    method = <span style="color: #008000;">None</span>
    params = <span style="color: black;">&#91;</span>e <span style="color: #ff7700;font-weight:bold;">for</span> e <span style="color: #ff7700;font-weight:bold;">in</span> urls.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/&quot;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">if</span> e<span style="color: black;">&#93;</span>
    params.<span style="color: black;">reverse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> params:
        method = get_method<span style="color: black;">&#40;</span>views, params.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> method:
        method = get_method<span style="color: black;">&#40;</span>views, <span style="color: #483d8b;">'index'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> method:
        <span style="color: #ff7700;font-weight:bold;">raise</span> http.<span style="color: black;">Http404</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'The requested admin page does not exist.'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> method<span style="color: black;">&#40;</span>request, <span style="color: #66cc66;">*</span>params<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> url_<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>args,<span style="color: #66cc66;">**</span>dic<span style="color: black;">&#41;</span>:
    regex = args<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> regex<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;/&quot;</span>:
        regex = regex<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>
    regex = <span style="color: #483d8b;">'^'</span> + regex
    regex = regex + <span style="color: #483d8b;">'$'</span>
    regex = <span style="color: #dc143c;">re</span>.<span style="color: black;">sub</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;:[^/]+&quot;</span>,
            <span style="color: #ff7700;font-weight:bold;">lambda</span> matchobj: <span style="color: #483d8b;">&quot;(?P&lt;%s&gt;[^/]+)&quot;</span> <span style="color: #66cc66;">%</span> matchobj.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>,
            regex<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> url<span style="color: black;">&#40;</span>regex, <span style="color: #66cc66;">*</span>args<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>, <span style="color: #66cc66;">**</span>dic<span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/06/url_helper%e7%ae%80%e5%8c%96django%e7%9a%84url%e9%85%8d%e7%bd%ae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DPress演示站点开放</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/05/dpress%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e5%bc%80%e6%94%be/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/05/dpress%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e5%bc%80%e6%94%be/#comments</comments>
		<pubDate>Sat, 30 May 2009 11:10:27 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[dpress]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/05/dpress%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e5%bc%80%e6%94%be/</guid>
		<description><![CDATA[今天部署了一个dpress的演示站点。 http://vik.haoluobo.com/dpress/ http://vik.haoluobo.com/dpress/admin 用户名：vicalloy 密码：vicalloy 感觉django的部署还是太麻烦…]]></description>
			<content:encoded><![CDATA[<p>今天部署了一个dpress的演示站点。</p>
<p><a title="http://vik.haoluobo.com/dpress/" href="http://vik.haoluobo.com/dpress/">http://vik.haoluobo.com/dpress/</a></p>
<p><a title="http://vik.haoluobo.com/dpress/admin" href="http://vik.haoluobo.com/dpress/admin">http://vik.haoluobo.com/dpress/admin</a> 用户名：vicalloy 密码：vicalloy</p>
<p>感觉django的部署还是太麻烦…</p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/05/dpress%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e5%bc%80%e6%94%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DPress-Django开发的Blog</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/05/dpress-django%e5%bc%80%e5%8f%91%e7%9a%84blog/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/05/dpress-django%e5%bc%80%e5%8f%91%e7%9a%84blog/#comments</comments>
		<pubDate>Thu, 28 May 2009 18:03:09 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[dpress]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/05/dpress-django%e5%bc%80%e5%8f%91%e7%9a%84blog/</guid>
		<description><![CDATA[用Django做Blog实在是太过简单，所以在网上可以轻易的找到大量用django实现的Blog，DPress就是其中一个。 本想用这个项目做Django最佳实践的教程，不过发现自己实在是不擅长这个。此外该项目花费的时间比预期的要多出不少，以至到后期挺没耐心，功能方面也因此大幅缩水。 目前DPress的基础功能已经完成，文档方面我会在晚些时候补上。 有兴趣的朋友可以将代码下回来看看。如果要使用Django自己服务器启动起来非常容易。 使用SVN把代码下回来 http://dpress.googlecode.com/svn/trunk/ 。 运行 \trunk\scripts\init.bat 完成一些必要的初始化（复制静态文件到相关目录）。 运行 \trunk\site\dpress\scripts\syncdb.bat 初始化数据库。 运行 \trunk\site\dpress\scripts\runserver.bat 启动服务。 访问 http://127.0.0.1:8000/admin/ 在管理后台添加日志。 DPress本着以最少的代价完成最多工作的原则，能不造轮子的地方就不造轮子。 Blog的编辑功能完全交给admin处理。 使用filebrowser对admin扩展，实现对文件的管理。 使用django-tinymce，实现html的可视化编辑。 文章的Tag功能使用django-tagging实现。 comments功能使用django.contrib.comments。 Blog本身也大量“借鉴”了pinax的blog组件。 Blog支持使用书写格式有Markdown、Textile、普通文本，html（支持可视化编辑）、reStructuredText（当然，你需要安装有相关的库）。 对Blog应用来说，一般都会有较高的个性化要求。换肤基本上成了必备功能。很遗憾，这方面是django的软肋。换肤需要创建新的模板，并需要修改配置文件，指定使用新模板。好的方面是，DPress的模板在我优化过后，还是比较简单，改起来还算方便的。 虽然在开始DPress之前就计划的很好，本以为很容易就可以搞定，但事与愿违开发过程中遇中还是遇到了一些麻烦。 Pinax中的Blog组件使用threadedcomments来增加评论支持。在评论内容填写不完整时，会转到它自定义的页面。我认为这是一个挺不友好的设置，尝试修正无果。切换到django.contrib.comments后问题则更糟，不但评论出错会跳到自定义页面，即使评论成功了不会转到评论页面，而是给出一个评论成功的提示。最后没办法，还是自己将添加评论的代码给写了一遍。 此外在模板方面也折腾掉了大量的时间。模板的本身也是程序中重要的一环，但不少的可重用app都没有带任何模板，而且也缺乏模板方面的范例。在我看来，这也是django的第三方app普遍不太好用的重要原因之一。 下面上张图吧，模板的样式，是偷的朋友BLOG的（他也是偷别人的）。]]></description>
			<content:encoded><![CDATA[<p>用Django做Blog实在是太过简单，所以在网上可以轻易的找到大量用django实现的Blog，<a href="http://code.google.com/p/dpress/">DPress</a>就是其中一个。</p>
<p>本想用这个项目做Django最佳实践的教程，不过发现自己实在是不擅长这个。此外该项目花费的时间比预期的要多出不少，以至到后期挺没耐心，功能方面也因此大幅缩水。</p>
<p>目前DPress的基础功能已经完成，文档方面我会在晚些时候补上。</p>
<p>有兴趣的朋友可以将代码下回来看看。如果要使用Django自己服务器启动起来非常容易。</p>
<ol>
<li>使用SVN把代码下回来 <a href="http://dpress.googlecode.com/svn/trunk/">http://dpress.googlecode.com/svn/trunk/</a> 。 </li>
<li>运行 \trunk\scripts\init.bat 完成一些必要的初始化（复制静态文件到相关目录）。 </li>
<li>运行 \trunk\site\dpress\scripts\syncdb.bat 初始化数据库。 </li>
<li>运行 \trunk\site\dpress\scripts\runserver.bat 启动服务。 </li>
<li>访问 <a title="http://127.0.0.1:8000/admin/" href="http://127.0.0.1:8000/admin/">http://127.0.0.1:8000/admin/</a> 在管理后台添加日志。 </li>
</ol>
<p>DPress本着以最少的代价完成最多工作的原则，能不造轮子的地方就不造轮子。</p>
<ul>
<li>Blog的编辑功能完全交给admin处理。 </li>
<li>使用<a href="http://code.google.com/p/django-filebrowser/">filebrowser</a>对admin扩展，实现对文件的管理。 </li>
<li>使用<a href="http://code.google.com/p/django-tinymce/">django-tinymce</a>，实现html的可视化编辑。 </li>
<li>文章的Tag功能使用<a href="http://code.google.com/p/django-tagging/">django-tagging</a>实现。 </li>
<li>comments功能使用django.contrib.comments。 </li>
<li>Blog本身也大量“借鉴”了pinax的blog组件。 </li>
<li>Blog支持使用书写格式有Markdown、Textile、普通文本，html（支持可视化编辑）、reStructuredText（当然，你需要安装有相关的库）。 </li>
</ul>
<p>对Blog应用来说，一般都会有较高的个性化要求。换肤基本上成了必备功能。很遗憾，这方面是django的软肋。换肤需要创建新的模板，并需要修改配置文件，指定使用新模板。好的方面是，DPress的模板在我优化过后，还是比较简单，改起来还算方便的。</p>
<p>虽然在开始DPress之前就计划的很好，本以为很容易就可以搞定，但事与愿违开发过程中遇中还是遇到了一些麻烦。</p>
<p>Pinax中的Blog组件使用<a href="http://code.google.com/p/django-threadedcomments/">threadedcomments</a>来增加评论支持。在评论内容填写不完整时，会转到它自定义的页面。我认为这是一个挺不友好的设置，尝试修正无果。切换到django.contrib.comments后问题则更糟，不但评论出错会跳到自定义页面，即使评论成功了不会转到评论页面，而是给出一个评论成功的提示。最后没办法，还是自己将添加评论的代码给写了一遍。</p>
<p>此外在模板方面也折腾掉了大量的时间。模板的本身也是程序中重要的一环，但不少的可重用app都没有带任何模板，而且也缺乏模板方面的范例。在我看来，这也是django的第三方app普遍不太好用的重要原因之一。</p>
<p>下面上张图吧，模板的样式，是偷的朋友BLOG的（他也是偷别人的）。</p>
<p><img src="http://vik.haoluobo.com/blog/wp-content/gallery/dpress/dpress02.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/05/dpress-django%e5%bc%80%e5%8f%91%e7%9a%84blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>初次尝试翻译较长的文章</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/05/%e5%88%9d%e6%ac%a1%e5%b0%9d%e8%af%95%e7%bf%bb%e8%af%91%e8%be%83%e9%95%bf%e7%9a%84%e6%96%87%e7%ab%a0/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/05/%e5%88%9d%e6%ac%a1%e5%b0%9d%e8%af%95%e7%bf%bb%e8%af%91%e8%be%83%e9%95%bf%e7%9a%84%e6%96%87%e7%ab%a0/#comments</comments>
		<pubDate>Wed, 13 May 2009 12:40:07 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[unladen swallow]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/05/%e5%88%9d%e6%ac%a1%e5%b0%9d%e8%af%95%e7%bf%bb%e8%af%91%e8%be%83%e9%95%bf%e7%9a%84%e6%96%87%e7%ab%a0/</guid>
		<description><![CDATA[以前也翻译过一些东西，不过都是非常短的文字。今天在网上看到一篇关于unladen swallow（Google的python实现）的文章，于是尝试对其进行翻译。 翻译东西确实不是一件容易的事。外文文章要读懂很容易，你只想要关注其中的重点即可，对于一些不重要的地方即使你没读懂也没关系。在翻译的时候你很容易的就会陷入了原作者的语言习惯，但外文和中文的语言习惯还是有很大的差别。其中语言习惯的差别不仅仅表现在句式结构上，还会贯穿在整片文字的语言组织上。所以如果你是按句翻译，那不管你如何组织语言，依旧会读起来很拗口。 除技术因素外，翻译还是一个很考验耐心的活。一篇可以在几分钟内读完的文章翻译起来得花几个小时。 虽然翻译得比较糟糕（自己都不想再读一遍），不过总算翻译完了，如果哪天有空就再休整一下，至少不要读得这么恶心。 unladen swallow: 加速Python]]></description>
			<content:encoded><![CDATA[<p>以前也翻译过一些东西，不过都是非常短的文字。今天在网上看到一篇关于unladen swallow（Google的python实现）的文章，于是尝试对其进行翻译。</p>
<p>翻译东西确实不是一件容易的事。外文文章要读懂很容易，你只想要关注其中的重点即可，对于一些不重要的地方即使你没读懂也没关系。在翻译的时候你很容易的就会陷入了原作者的语言习惯，但外文和中文的语言习惯还是有很大的差别。其中语言习惯的差别不仅仅表现在句式结构上，还会贯穿在整片文字的语言组织上。所以如果你是按句翻译，那不管你如何组织语言，依旧会读起来很拗口。</p>
<p>除技术因素外，翻译还是一个很考验耐心的活。一篇可以在几分钟内读完的文章翻译起来得花几个小时。</p>
<p>虽然翻译得比较糟糕（自己都不想再读一遍），不过总算翻译完了，如果哪天有空就再休整一下，至少不要读得这么恶心。</p>
<p><a href="http://www.yeeyan.com/articles/view/vicalloy/40850">unladen swallow: 加速Python</a></p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/05/%e5%88%9d%e6%ac%a1%e5%b0%9d%e8%af%95%e7%bf%bb%e8%af%91%e8%be%83%e9%95%bf%e7%9a%84%e6%96%87%e7%ab%a0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Django资源大全</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/04/django%e8%b5%84%e6%ba%90%e5%a4%a7%e5%85%a8/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/04/django%e8%b5%84%e6%ba%90%e5%a4%a7%e5%85%a8/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 14:16:41 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/04/django%e8%b5%84%e6%ba%90%e5%a4%a7%e5%85%a8/</guid>
		<description><![CDATA[在wiki上整理了一个关于django的页面，将一些我认为比较有用的信息都列在了上面。 应当说这个页面的第一期工作已经完成了，以后将继续更新。 页面地址]]></description>
			<content:encoded><![CDATA[<p>在wiki上整理了一个关于django的页面，将一些我认为比较有用的信息都列在了上面。</p>
<p>应当说这个页面的第一期工作已经完成了，以后将继续更新。</p>
<p><a href="http://vik.haoluobo.com/trac/wiki/Django">页面地址</a></p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/04/django%e8%b5%84%e6%ba%90%e5%a4%a7%e5%85%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>农历0.2.1发布（Yahoo Widgets）</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/03/%e5%86%9c%e5%8e%86021%e5%8f%91%e5%b8%83%ef%bc%88yahoo-widgets%ef%bc%89/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/03/%e5%86%9c%e5%8e%86021%e5%8f%91%e5%b8%83%ef%bc%88yahoo-widgets%ef%bc%89/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 11:33:48 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[chinese calendar]]></category>
		<category><![CDATA[yahoo widgets]]></category>
		<category><![CDATA[农历]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/03/%e5%86%9c%e5%8e%86021%e5%8f%91%e5%b8%83%ef%bc%88yahoo-widgets%ef%bc%89/</guid>
		<description><![CDATA[昨天收到网友的邮件说我做的农历插件无法使用。但我自己测试却没有发现啥问题。于是在自己的虚拟机里测试了下，还真无法工作了。 检查代码发现里面有runCommand(‘cal’)，这样的代码。去查了下，发现cal是linux查看日历的命令。估计是新版本的yahoo widgets去掉了相关命令的支持。重新下载了个yahoo官方的日历组件，将runCommand(‘cal’)用新版yahoo插件中相关代码替换后我的widget终于又可以正常工作了。 我的这个农历组件已经发布两年多了（看截图:-），直到现在才有人给我反馈（不过，我也不知道从啥时候开始出问题），看来这东西还真没几个人用。 下载]]></description>
			<content:encoded><![CDATA[<p>昨天收到网友的邮件说我做的农历插件无法使用。但我自己测试却没有发现啥问题。于是在自己的虚拟机里测试了下，还真无法工作了。</p>
<p>检查代码发现里面有runCommand(‘cal’)，这样的代码。去查了下，发现cal是linux查看日历的命令。估计是新版本的yahoo widgets去掉了相关命令的支持。重新下载了个yahoo官方的日历组件，将runCommand(‘cal’)用新版yahoo插件中相关代码替换后我的widget终于又可以正常工作了。</p>
<p>我的这个农历组件已经发布两年多了（看截图:-），直到现在才有人给我反馈（不过，我也不知道从啥时候开始出问题），看来这东西还真没几个人用。</p>
<p><b><a href="http://vik.haoluobo.com/trac/raw-attachment/wiki/PoweredByVicalloy/chinese_calendar.widget">下载</a></b></p>
<p><a href="http://vik.haoluobo.com/trac/attachment/wiki/PoweredByVicalloy/chinese_calendar.png"><img title="农历截图" alt="农历截图" src="http://vik.haoluobo.com/trac/raw-attachment/wiki/PoweredByVicalloy/chinese_calendar.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/03/%e5%86%9c%e5%8e%86021%e5%8f%91%e5%b8%83%ef%bc%88yahoo-widgets%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[Django]增强的创建app的命令</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/03/django%e5%a2%9e%e5%bc%ba%e7%9a%84%e5%88%9b%e5%bb%baapp%e7%9a%84%e5%91%bd%e4%bb%a4/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/03/django%e5%a2%9e%e5%bc%ba%e7%9a%84%e5%88%9b%e5%bb%baapp%e7%9a%84%e5%91%bd%e4%bb%a4/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 13:08:49 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[django create_app]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/03/django%e5%a2%9e%e5%bc%ba%e7%9a%84%e5%88%9b%e5%bb%baapp%e7%9a%84%e5%91%bd%e4%bb%a4/</guid>
		<description><![CDATA[简介 下载地址 虽然django的admin漂亮的实现了CRUD，不过在有时候admin并不是这么好用。然后开始进行手写CRUD，接着发现自己又陷入了重复操作中。相比而言Ruby自动生成的添加删除功能就好不少，你生成的基础框架是可以扩展的。 为了减少手动书写CRUD的工作量，我写了一个扩展的startapp command。使用这个命令会自动生成 list/new/edit 的操作和html文件（这样修改起来就方便多了）。 使用说明 如需要在其他工程使用该命令，只需要将项目中的django_extensions文件夹复制到其他工程的app目录，并在settings.py里把django_extensions添加到app列表里。该扩展命令为create_app，使用方法和django官方的startapp一致（如：manage.py create_app blog）。 命令演示 为了方便演示，该扩展命令包含了一个演示工程（hidjango）。下面的步骤是windows平台（因为用了几个bat）。 运行\hidjango\scripts\create_app.bat。根据提示输入app的名称，如blog。 打开\hidjango\settings.py，在app列表里添加 hidjango.blog 。 运行\hidjango\scripts\syncdb.bat，初始化数据库。 修改\hidjango\urls.py，添加app的映射 (r&#8217;^', include(&#8216;hidjango.blog.urls&#8217;)), 。 运行\hidjango\scripts\runserver.bat启动开发服务器。 在浏览器输入http://127.0.0.1:7000/访问页面，并可以实现完整的添加删除操作。 注: command的py代码大部分都是从django-command-extensions（http://code.google.com/p/django-command-extensions）里复制过来的，我只做了少部分的修改。 该命令还比较简单，还有很多可以扩展的地方。比如app_name不一定和model_name相同等。 模板文件预览： /django_extensions/conf/app_template/ &#124;~templates/ &#124; `~{{ app_name }}/ &#124; &#124;-base.html &#124; &#124;-edit.html &#124; &#124;-list.html &#124; `-new.html &#124;~templatetags/ &#124; `-__init__.py &#124;-__init__.py &#124;-admin.py &#124;-forms.py &#124;-models.py &#124;-tests.py &#124;-urls.py `-views.py]]></description>
			<content:encoded><![CDATA[<h3>简介</h3>
<p> <a href="http://vik.haoluobo.com/blog/wp-content/uploads/2009/03/hidjango.zip"><strong>下载地址</strong></a>
<p>虽然django的admin漂亮的实现了CRUD，不过在有时候admin并不是这么好用。然后开始进行手写CRUD，接着发现自己又陷入了重复操作中。相比而言Ruby自动生成的添加删除功能就好不少，你生成的基础框架是可以扩展的。 </p>
<p>为了减少手动书写CRUD的工作量，我写了一个扩展的startapp command。使用这个命令会自动生成 list/new/edit 的操作和html文件（这样修改起来就方便多了）。 </p>
<h3>使用说明</h3>
<p>如需要在其他工程使用该命令，只需要将项目中的django_extensions文件夹复制到其他工程的app目录，并在settings.py里把django_extensions添加到app列表里。该扩展命令为create_app，使用方法和django官方的startapp一致（如：manage.py create_app blog）。 </p>
<h3>命令演示</h3>
<p>为了方便演示，该扩展命令包含了一个演示工程（hidjango）。下面的步骤是windows平台（因为用了几个bat）。 </p>
<ol>
<li>运行\hidjango\scripts\create_app.bat。根据提示输入app的名称，如blog。 </li>
<li>打开\hidjango\settings.py，在app列表里添加 hidjango.blog 。 </li>
<li>运行\hidjango\scripts\syncdb.bat，初始化数据库。 </li>
<li>修改\hidjango\urls.py，添加app的映射 (r&#8217;^', include(&#8216;hidjango.blog.urls&#8217;)), <sup>。 </sup></li>
<li>运行\hidjango\scripts\runserver.bat启动开发服务器。 </li>
<li>在浏览器输入<a href="http://127.0.0.1:7000/">http://127.0.0.1:7000/</a>访问页面，并可以实现完整的添加删除操作。 </li>
</ol>
<h3>注:</h3>
<ul>
<li>command的py代码大部分都是从django-command-extensions（<a href="http://code.google.com/p/django-command-extensions">http://code.google.com/p/django-command-extensions</a>）里复制过来的，我只做了少部分的修改。 </li>
<li>该命令还比较简单，还有很多可以扩展的地方。比如app_name不一定和model_name相同等。 </li>
</ul>
<h3>模板文件预览：</h3>
<pre>/django_extensions/conf/app_template/
|~templates/
| `~{{ app_name }}/
|   |-base.html
|   |-edit.html
|   |-list.html
|   `-new.html
|~templatetags/
| `-__init__.py
|-__init__.py
|-admin.py
|-forms.py
|-models.py
|-tests.py
|-urls.py
`-views.py</pre>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/03/django%e5%a2%9e%e5%bc%ba%e7%9a%84%e5%88%9b%e5%bb%baapp%e7%9a%84%e5%91%bd%e4%bb%a4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>整了个在线将reStructuredText转成html的东西</title>
		<link>http://vik.haoluobo.com/blog/index.php/2009/01/%e6%95%b4%e4%ba%86%e4%b8%aa%e5%9c%a8%e7%ba%bf%e5%b0%86restructuredtext%e8%bd%ac%e6%88%90html%e7%9a%84%e4%b8%9c%e8%a5%bf/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2009/01/%e6%95%b4%e4%ba%86%e4%b8%aa%e5%9c%a8%e7%ba%bf%e5%b0%86restructuredtext%e8%bd%ac%e6%88%90html%e7%9a%84%e4%b8%9c%e8%a5%bf/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 15:43:12 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reST]]></category>
		<category><![CDATA[reStructuredText]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/index.php/2009/01/%e6%95%b4%e4%ba%86%e4%b8%aa%e5%9c%a8%e7%ba%bf%e5%b0%86restructuredtext%e8%bd%ac%e6%88%90html%e7%9a%84%e4%b8%9c%e8%a5%bf/</guid>
		<description><![CDATA[现在不少python程序都是用reStructuredText写文档。 比较郁闷的是有部分文档都只提供了reStructuredText的源文件，没有转换好的html文件。 感觉自己每次手动转比较麻烦，于是花了点时间写了个在线的。 将reStructuredText文件贴进去，提交后就可以看到转好的页面了。 现在还有点问题，sphinx对reStructuredText进行了扩展。 对包含了sphinx标签的会处理出错（谁知道怎么忽略错误？）。 地址是 http://rest.haoluobo.com/ 程序的代码可是非常的少，主要代码就是下面几行。 #!/usr/bin/env python # -*- coding: UTF-8 -*- from django.http import HttpResponse from docutils.core import publish_string def index(request): &#160;&#160; html = &#34;&#34;&#34; &#60;html&#62; &#160;&#160;&#160;&#160;&#160;&#160; &#60;head&#62;&#60;/head&#62; &#160;&#160;&#160;&#160;&#160;&#160; &#60;body&#62; &#160;&#160;&#160;&#160;&#160;&#160; &#60;form action=&#34;&#34; method=&#34;post&#34;&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;textarea name=&#34;rest&#34; cols=&#34;60&#34; rows=&#34;20&#34; onfocus=&#34;this.value=&#8221;&#34;&#62;&#60;/textarea&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;br/&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;input type=&#34;submit&#34; value=&#34;提交&#34;/&#62; &#160;&#160;&#160;&#160;&#160;&#160; &#60;/form&#62; &#160;&#160; &#60;/body&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>现在不少python程序都是用reStructuredText写文档。    <br />比较郁闷的是有部分文档都只提供了reStructuredText的源文件，没有转换好的html文件。     <br />感觉自己每次手动转比较麻烦，于是花了点时间写了个在线的。     <br />将reStructuredText文件贴进去，提交后就可以看到转好的页面了。</p>
<p>现在还有点问题，sphinx对reStructuredText进行了扩展。    <br />对包含了sphinx标签的会处理出错（谁知道怎么忽略错误？）。     <br />地址是 <a href="http://rest.haoluobo.com/">http://rest.haoluobo.com/</a></p>
<p>程序的代码可是非常的少，主要代码就是下面几行。</p>
<p>#!/usr/bin/env python   <br /># -*- coding: UTF-8 -*-    <br />from django.http import HttpResponse    <br />from docutils.core import publish_string </p>
<p>def index(request):   <br />&#160;&#160; html = &quot;&quot;&quot;    <br />&lt;html&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;head&gt;&lt;/head&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;body&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;form action=&quot;&quot; method=&quot;post&quot;&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;textarea name=&quot;rest&quot; cols=&quot;60&quot; rows=&quot;20&quot; onfocus=&quot;this.value=&#8221;&quot;&gt;&lt;/textarea&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;br/&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;input type=&quot;submit&quot; value=&quot;提交&quot;/&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;/form&gt;    <br />&#160;&#160; &lt;/body&gt;    <br />&lt;/html&gt;    <br />&#160;&#160; &quot;&quot;&quot;    <br />&#160;&#160; if request.POST:    <br />&#160;&#160;&#160;&#160;&#160;&#160; html = publish_string(request.POST['rest'], writer_name=&#8217;html&#8217;)    <br />&#160;&#160; return HttpResponse(html)</p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2009/01/%e6%95%b4%e4%ba%86%e4%b8%aa%e5%9c%a8%e7%ba%bf%e5%b0%86restructuredtext%e8%bd%ac%e6%88%90html%e7%9a%84%e4%b8%9c%e8%a5%bf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>老照片的演示站点重新开放</title>
		<link>http://vik.haoluobo.com/blog/index.php/2008/12/%e8%80%81%e7%85%a7%e7%89%87%e7%9a%84%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e9%87%8d%e6%96%b0%e5%bc%80%e6%94%be/</link>
		<comments>http://vik.haoluobo.com/blog/index.php/2008/12/%e8%80%81%e7%85%a7%e7%89%87%e7%9a%84%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e9%87%8d%e6%96%b0%e5%bc%80%e6%94%be/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 11:10:47 +0000</pubDate>
		<dc:creator>vicalloy</dc:creator>
				<category><![CDATA[vicalloy的庄家]]></category>
		<category><![CDATA[老照片]]></category>

		<guid isPermaLink="false">http://vik.haoluobo.com/blog/?p=24</guid>
		<description><![CDATA[今天在服务器上将老照片给部署好了，关闭许久的老照片终于再次开放了。 由于使用mod_rewrite似乎有些问题，我将静态问题统一放在了另一个域名下，但这却引出了一些其他问题。以前写程序的时候没有注意到静态文件的问题，直接将静态文件的位置给写死了，此外还有部分其他问题。不过修正后终于跑起来了。 在经过上次的修正后，依旧存在部分css兼容性的问题。不管了，至少大多页面看上去还是正常的。 http://lzpian.haoluobo.com/]]></description>
			<content:encoded><![CDATA[<p>今天在服务器上将老照片给部署好了，关闭许久的老照片终于再次开放了。</p>
<p>由于使用mod_rewrite似乎有些问题，我将静态问题统一放在了另一个域名下，但这却引出了一些其他问题。以前写程序的时候没有注意到静态文件的问题，直接将静态文件的位置给写死了，此外还有部分其他问题。不过修正后终于跑起来了。</p>
<p>在经过上次的修正后，依旧存在部分css兼容性的问题。不管了，至少大多页面看上去还是正常的。</p>
<p><a href="http://lzpian.haoluobo.com/" target="_blank">http://lzpian.haoluobo.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://vik.haoluobo.com/blog/index.php/2008/12/%e8%80%81%e7%85%a7%e7%89%87%e7%9a%84%e6%bc%94%e7%a4%ba%e7%ab%99%e7%82%b9%e9%87%8d%e6%96%b0%e5%bc%80%e6%94%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
