用bottle+mongodb写的blog程序支持mysql啦

Tue 14 August 2012

前面博文提到过,本人用bottle+mongodb实现了以blog程序,

最近有些空闲时间,就重新用mvc的模式重写了一下,因为mongodb太过耗费内存,对一些小型的vps太过吃力所以加入了mysql的支持,

虽然较上次有些完善,但是还是有很多不足代码放在了googlecode上,由于最近一直在使用git,索性也就新建了一个git的项目,之前svn的项目也会更新.

所以大家想浏览代码可以到下面两个地方去,有什么不足和建议还请指教,如果你也想加入进来,可以留言或发email给我:

git:http://code.google.com/p/linuxzen/source/browse/water

svn:http://code.google.com/p/sharepythoncode/source/browse/water/

Category: Python Tagged: 支持mysql web python MySQL mongodb bottle blog

comments


bottle使用Python装饰器巧妙解决用户验证

Sat 16 June 2012

上篇文章发布了一个自己写的用bottle写的web程序,其中收获最大就是Python装饰器的使用.前几天也是比较忙,所以没能分享出来,今天就给大家分享一下.

首先来分析下需求,web程序后台需要认证,后台页面包含多个页面,最普通的方法就是为每个url添加认证,但是这样就需要每个每个绑定url的后台函数都需要添加类似或者相同的代码,但是这样做代码就过度冗余,而且不利于扩展.

接下来我们先不谈及装饰器,我们都知道Python是个很强大的语言,她可以将函数当做参数传递给函数,最简单的:

def p():
    print 'Hello,world'

def funcfactor(func):
    print 'calling function named', func.__name__
    func()
    print 'end'

funcfactor(p)
# 输出为:
# calling function named p
# Hello,world
# end

一目了然的程序,定义一个函数p(),将函数p当做参数传递给喊出funcfactor,在执行p函数前后加上一些动作.

我们还可以这么做:

def p …

Category: Python Tagged: 验证 装饰器 用户 python bottle

comments

Read More

用bottle+mongodb写的一个blog程序

Sat 16 June 2012

我个人觉得更好更快的学习和掌握某个东西最好的方法就是使用它,多使用它.然后在一次次的解决问题中来快速掌握和了解它.你觉得呢?前段时间接触了bottle这个轻量web框架,和nosql数据库mongodb,为了掌握和了解这她们,我自己做了一个blog程序,参照了vimer.cn里的设计的物理设计.是用bottle作为web开发框架,mongodb作为后台数据库.主要实现功能:

前台显示文章: 按分类显示 按标签显示 按月份归档显示 最新文章 评论 后台管理: 管理文章 管理分类 管理评论 发表文章 用户验证

目录结构

water

+-app 程序目录

|----admin.py 后台管理

|----blog.py 前台显示

|----dbconn.py 数据库连接

|----encrypt.py包含加密函数

+-static 静态文件目录:包括js css image

+-views 模版目录

+-index.py 用于启动整个程序 …

Category: Python Tagged: 项目 实例 web python mongodb bottle

comments

Read More

bottle的cookie操作小记(获取不是在当前页面创建的cookie)

Sat 02 June 2012

这两天为用bottle+mongodb写的一个项目加上登录功能,无奈怎么都获取不到保存的cookie,文档给出让我们这样操作cookie的代码片段:

@route(/login)
def login ():
      username = request .forms .get(username )
      password = request .forms .get(password )
      if check_user_credentials(username, password):
           response .set_cookie("account", username, secret= some-secret-key)
           return "Welcome %s!You are now logged in." % username
      else :
           return "Login failed." 

@route(/restricted)
def restricted_area ():
      username = request .get_cookie …

Category: Python Tagged: web python cookie bottle

comments

Read More

使用beaker让bottle支持session

Sat 26 May 2012

bottle是一个小型web框架,很小只有一个文件,但功能确很强大,学起来也简单,简单和小巧的同时也有很多不足,某些功能支持还不是很完善,比如session.但是也有它自身的好处,我们可以自己或使用别的模块来扩展它,不像django,很强大,但是想要进一步扩展的时候确无从下手.我们可以把非常简单而强大的bottle自己动手将它变得更加强大和完善.

bottle小巧支持cookie但是不支持session.为了安全起见我们有时候希望使用的session.我们可以使用中间件beaker来扩展bottle,使我们的bottle应用支持session.废话不多说.首先beaker不是内置模块,我们首先来安装它.当然你可以网上下包手动安装,我们使用最简单的:

easy_install beaker

没有easy_install这个命令?google吧,装了之后还是没有,如过时win的话检查环境变量,将Python安装目录下的Scripts目录添加到环境变量.

安装好后我们如何使用它,下面一段带面是使用的:

#!/usr/bin/env python
from bottle import route, default_app, run, request
from beaker.middleware import SessionMiddleware

session_opts = {
                'session.type …

Category: Python Tagged: web session python bottle beaker

comments

Read More

使用Linux shell实时检测文件变更

Fri 18 May 2012

使用python做web开发,现在流行使用uwsgi调用python程序,但是使用uwsgi一段时间发现有一个弊端,就是每次更改源代码后必须重启uwsgi才能生效,包括更改模板文件也是,我是个懒人,再经过一段时间反复的更改-重启后我终于忍受不了,决定写一个脚本来定时程序目录的文件改动,并及时自动重启uwsgi,来解放我的双手可以不用理会这些琐碎的重启工作. 用了点时间来编写了一个脚本用来判断是否更改,然后判断是否需要重启uwsgi.

下面放出脚本内容:

#!/bin/bash
# Author      : cold
# Homepage    : http://www.linuxzen.com
# Filename    : checkchange.sh
# Useage      : sh checkchange.sh [dir]
checkisdir()
        # Have one argument
        # The argument is a directory
        for i in `ls $1 | sed -e 's/ /\n/g'`
        do …

Category: shell Tagged: 检测 文件 实时 变更 uwsgi shell python Linux bottle

comments

Read More

Gentoo下搭建python web环境(nginx+bottle+virtualenv+uwsgi)

Wed 16 May 2012

最近根据Gentoo官方文档整了一台Gentoo的虚拟机,感觉还是不错的,决定放弃CentOS投奔Gentoo,这几天研究NoSQL mongodb和python的bottle框架,web.py效率不是很好,而且是类级,bottle使用装饰器(虽然对她还是懵懂阶段,但是貌似很强大).感觉bottle更加强大和接近python,没有封装太多东西,django只能依照她的思想来做自己的事,最后还是选择了bottle来进入python的web世界,web服务器同样选择nginx.virtualenv可以让一个应用有一个相对独立的环境,特别用于多解释器环境或者经常变更的环境.uwsgi是web和python的中间件(可以这么解释吧).

环境:

系统:Gentoo ip:192.168.3.1

好吧废话不多说,Gentoo安装过程这里不再详述,官方文档很详细,下面记录安装配置过程. 首先Gentoo没有默认安装vim,先安装vim:

emerge vim

安装配置Python

最新版的Gentoo安装完毕后默认使用python3.2,而我惯用Python2.7.先首先安装python2.7. Gentoo使用emerge包管理,安装Python2.7:

cd /usr/portage/dev-lang …

Category: Linux Tagged: web virtualenv uwsgi python Gentoo bottle nginx

comments

Read More
Page 1 of 1

Fork me on GitHub