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’就可以了