用webpy搭建简易博客失败,求大神跑跑我的代码能指教我!!!! -《狗嗨默示录》-

blog.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#载入框架
import web
#载入数据库操作model(稍后创建)
import model
#URL映射
urls = (
    '/','Index',
    '/view/(/d+)','View',
    '/new','New',
    '/delete/(/d+)','Delete',
    '/edit/(/d+)','Edit',
    '/login','Login',
    '/logout','Logout',
        )
app = web.application(urls,globals())
#模板公共变量
t_globals = {
    'datestr':web.datestr,
    'cookie':web.cookies,
}
#指定模板目录,并设定公共模板
render = web.template.render('templates',base='base',globals=t_globals)
#创建登录表单
login = web.form.Form(
    web.form.Textbox('username'),
    web.form.Password('password'),
    web.form.Button('login')
)
#首页类
class Index:
    def GET(self):
        login_form = login()
        posts = model.get_posts()
        return render.index(posts,login_form)
    def POST(self):
        login_form = login()
        if login_form.validates():
            if login_form.d.username == 'admin' and login_form.d.password == 'admin':
                web.setcookie('username',login_form.d.username)
        raise web.seeother('/')
#查看文章类
class View:
    def GET(self,id):
        post = model.get_post(int(id))
        return render.view(post)
#新建文章类
class New:
    form = web.form.Form(
        web.form.Textbox('title',web.form.notnull,size=30,description='Post title'),
        web.form.Textarea('content',web.form.notnull,rows=30,cols=80,description='Post content'),
        web.form.Button('Post entry'),
    )
    def GET(self):
        form = self.form()
        return render.new(form)
    def POST(self):
        form = self.form()
        if not form.validates():
            return render.new(form)
        model.new_post(form.d.title,form.d.content)
        raise web.seeother('/')
#删除文章类
class Delete:
    def POST(self,id):
        model.del_post(int(id))
        raise web.seeother('/')
#编辑文章类
class Edit:
    def GET(self,id):
        post = model.get_post(int(id))
        form = New.form()
        form.fill(post)
        return render.edit(post,form)
    def POST(self,id):
        form = New.form()
        post = model.get_post(int(id))
        if not form.validates():
            return render.edit(post,form)
        model.update_post(int(id),form.d.title,form.d.content)
        raise web.seeother('/')
#退出登录
class Logout:
    def GET(self):
        web.setcookie('username','',expires=-1)
        raise web.seeother('/')
#定义404错误显示内容
def notfound():
    return web.notfound("Sorry,the page you were looking for was not found!")

app.notfound = notfound
#运行
if __name__ == '__main__':
    app.run()
    print(web.debug())

 

model.py

#!/usr/bin/env python
# -*- coding:UTF-8 -*-
import web
import datetime
#数据库连接
db = web.database(dbn='mysql',user='root',pw='6666',db='webpy')
#获取所有文章
def get_posts():
    return db.select('entries',order='id DESC')
#获取文章内容
def get_post(id):
    try:
        return db.select('entries',where='id=$id',vars=locals())[0]
    except IndexError:
        return None
#新建文章
def new_post(title,text):
    db.insert(
        'entries',
        title = title,
        content = text,
        posted_on = datetime.datetime.utcnow()
    )
#删除文章
def del_post(id):
    db.delete('entries',where='id=$id',vars=locals())
#修改文章
def update_post(id,title,text):
    db.update(
        'entries',
        where='id=$id',
        vars=locals(),
        title=title,
        content=text
    )

 

放于templates下的模板文件:

base.html

<!-- base.html -->
<!DOCTYPE html>
$def with (page)
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>My Blog</title>
        <style>
            #menu{
                width:200px;
                float:right;
            }
        </style>
    </head>
    <body>
        <ul id="menu">
            <li>
                <a href="/">Home</a>
            </li>
            $if cookie().get('username'):
                <li>
                    <a href="/new">New Post</a>
                </li>
        </ul>
        $:page
    </body>
</html>

edit.html

<!-- edit.html -->
$def with (post,form)
<h1>Edit $form.d.title</h1>
<form action="" method="post">
    $:form.render()
</form>
<h2>Delete post</h2>
<form action="/delete/$post.id" method="post">
    <input type="submit" value="Delete post" />
</form>

index.html

<!-- index.html -->
$def with (posts, login_form)
<h1>Blog posts</h1>
$if not cookie().get('username'):
<form action="" method="post">
    $:login_form.render()</form>
$else:
    Welcome $cookie().get('username')!
    <a href="/logout" mce_href="/logout">Logout</a>
<ul>
    $for post in posts:
        <li>
            <a href="/view/$post.id" mce_href="/view/$post.id">$post.title</a>
            on $post.posted_on
            $if cookie().get('username'):
                <a href="/edit/$post.id" mce_href="/edit/$post.id">Edit</a>
                <a href="/delete/$post.id" mce_href="/delete/$post.id">Del</a>
        </li>
</ul>

new.html

<!-- new.html -->
$def with (form)
<h1>New Blog Post</h1>
<form action="" method="post">
    $:form.render()
</form>

view.html

<!-- view.html -->
$def with (post)
<h1>$post.title</h1>
$post.posted_on<br />
$post.content

 

 

posted @ 2017-08-11 17:46  李·狗嗨  阅读(234)  评论(0编辑  收藏  举报