lbforum是vicalloy写的一个开源论坛系统,采用django框架,使用多个第三方django模块,目前内置支持两个主题,支持整站部署和作为模块安装集成到原有系统,甚至提供了pip安装,项目地址:

可重用模块化:http://github.com/vicalloy/LBForum
整站:https://github.com/vicalloy/lbforum-site

程序可扩展性较好。日前本人为了方便自己把它搞到SAE上去了,演示地址:http://sms128.sinaapp.com/bbs/
也没做什么特别大的工作,只是简单修改了一下附件上传的部分,因为SAE不支持本地文件写入,所以根据SAE的storage API自己实现了一个storage类来替代Django默认的django.core.files.storage.FileSystemStorage ,在 settings.py增加以下内容

if os.environ.get('SERVER_SOFTWARE',None) is not None: #判断是否为SAE环境
    SAE_STORAGE_DOMAIN = 'lbforum'
    DEFAULT_FILE_STORAGE = 'ready4sae.SaeStorage'

然后把我写的ready4sae(见附件)置于模块搜索路径下即可。
实际用起来代码改动很小,这也恰好说明了Django 设计得很好,很强大。

另外我在用django-pagination里出现context[‘request’]这个不存在变量没有设计的现象,我估计pagination是根据这里面的变量来判断当前页码的。我不确定request是不是一定会出现在最后的context里面的,反正就是取不到,于是亡羊补牢,在pagination里写了个context_proccessor把request加回去,这样放的位置可能不利于升级,但是实在想不出比放在这里更合适的地方了。如果你按正常安装没有出现模块的错误提示,可以不用修改。

settings.py里入这个处理器

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static', #1.4
    #'staticfiles.context_processors.static', #1.2
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'djangohelper.context_processors.ctx_config',

    'pagination.context_processors.add_request_var',     #在这里加入
)

context_processors.py 代码如下:

#!encoding:utf-8
'''我也不知道怎么会把request变量丢掉的。于是手动加上这个,需要加入TEMPLATE_CONTEXT_PROCESSORS'''
def add_request_var(request):
    return {'request':request}

附件:ready4sae

===============================================
更新:
不需要另外写’pagination.context_processors.add_request_var’
用Django自己的’django.core.context_processors.request’就可以了

- EOF -