您的位置:首页 > 编程语言 > Python开发

随想录(用python开发网站)

2015-01-12 09:12 253 查看
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

在Linux上,利用python开发网站是一件很简单的事情。目前,支持python进行网站开发的框架有webpy、django、tornado。各位同学可以按照自己的喜好灵活地进行选择。就我个人而言,我比较喜欢webpy这样一个框架。

目前,关于webpy的学习内容都在webpy.org网站上。网站不但有cookbook,还有相关的的demo代码,很是方便。下面给出的demo工程也是来自于webpy的实例代码。它包含了基本的sql创建语句、python代码、html模板等等。

sql语句如下所示,

CREATE TABLE todo (
    id INT AUTO_INCREMENT,
    title TEXT,
    primary key (id)
);


模板的代码如下所示,其中templates/base.html为,

$def with (page)

<html>
<head>
    <title>Todo list</title>
</head>
<body>

$:page

</body>
</html>


templates/index.html为,

$def with (todos, form)

<table>
    <tr>
        <th>What to do ?</th>
        <th></th>
    </tr>
$for todo in todos:
    <tr>
        <td>$todo.title</td>
        <td>
            <form action="/del/$todo.id" method="post">
                <input type="submit" value="Delete"/>
            </form>
        </td>
    </tr>    
</table>  

<form action="" method="post">
$:form.render()
</form>

相关的python代码如下所示。其中数据库操作model.py为,

import web

db = web.database(dbn='mysql', db='test', user='root', pw='123456')

def get_todos():
    return db.select('todo', order='id')

def new_todo(text):
    db.insert('todo', title=text)

def del_todo(id):
    db.delete('todo', where="id=$id", vars=locals())


而相关的网站逻辑代码为todo.py,内容如下,

""" Basic todo list using webpy 0.3 """
import web
import model

### Url mappings

urls = (
    '/', 'Index',
    '/del/(\d+)', 'Delete'
)

### Templates
render = web.template.render('templates', base='base')

class Index:

    form = web.form.Form(
        web.form.Textbox('title', web.form.notnull, 
            description="I need to:"),
        web.form.Button('Add todo'),
    )

    def GET(self):
        """ Show page """
        todos = model.get_todos()
        form = self.form()
        return render.index(todos, form)

    def POST(self):
        """ Add new entry """
        form = self.form()
        if not form.validates():
            todos = model.get_todos()
            return render.index(todos, form)
        model.new_todo(form.d.title)
        raise web.seeother('/')

class Delete:

    def POST(self, id):
        """ Delete based on ID """
        id = int(id)
        model.del_todo(id)
        raise web.seeother('/')

app = web.application(urls, globals())

if __name__ == '__main__':
    app.run()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: