诛仙法宝飞剑:[Python]Basic wiki in 0.3
来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 11:49:35
Basic wiki in 0.3
Basic wiki in Webpy 0.3. Demonstrates basic idea behind wiki. Lacks revisions.
Files
/schema.sql/wiki.py/templates:/templates/view.html/templates/new.html/templates/base.html/templates/index.html/templates/edit.html/model.py
/schema.sql
CREATE TABLE pages (id INT AUTO_INCREMENT,url TEXT,title TEXT,content TEXT,primary key (id));
/wiki.py
""" Basic wiki using webpy 0.3 """import webimport modelimport markdown### Url mappingsurls = ('/', 'Index','/new', 'New','/edit/(\d+)', 'Edit','/delete/(\d+)', 'Delete','/(.*)', 'Page',)### Templatest_globals = {'datestr': web.datestr,'markdown': markdown.markdown,}render = web.template.render('templates', base='base', globals=t_globals)class Index:def GET(self):""" Show page """pages = model.get_pages()return render.index(pages)class Page:def GET(self, url):""" View single page """page = model.get_page_by_url(url)if not page:raise web.seeother('/new?url=%s' % web.websafe(url))return render.view(page)class New:def not_page_exists(url):return not bool(model.get_page_by_url(url))page_exists_validator = web.form.Validator('Page already exists',not_page_exists)form = web.form.Form(web.form.Textbox('url', web.form.notnull, page_exists_validator,size=30,description="Location:"),web.form.Textbox('title', web.form.notnull,size=30,description="Page title:"),web.form.Textarea('content', web.form.notnull,rows=30, cols=80,description="Page content:", post="Use markdown syntax"),web.form.Button('Create page'),)def GET(self):url = web.input(url='').urlform = self.form()form.fill({'url':url})return render.new(form)def POST(self):form = self.form()if not form.validates():return render.new(form)model.new_page(form.d.url, form.d.title, form.d.content)raise web.seeother('/' + form.d.url)class Delete:def POST(self, id):model.del_page(int(id))raise web.seeother('/')class Edit:form = web.form.Form(web.form.Textbox('url', web.form.notnull,size=30,description="Location:"),web.form.Textbox('title', web.form.notnull,size=30,description="Page title:"),web.form.Textarea('content', web.form.notnull,rows=30, cols=80,description="Page content:", post="Use markdown syntax"),web.form.Button('Update page'),)def GET(self, id):page = model.get_page_by_id(int(id))form = self.form()form.fill(page)return render.edit(page, form)def POST(self, id):form = self.form()page = model.get_page_by_id(int(id))if not form.validates():return render.edit(page, form)model.update_page(int(id), form.d.url, form.d.title, form.d.content)raise web.seeother('/')app = web.application(urls, globals())if __name__ == '__main__':app.run()
/templates/view.html
$def with (page)$var title: $page.title$page.title
$:markdown(page.content)Edit
/templates/new.html
$def with (form)New Wiki Page
/templates/base.html
$def with (page)$if page.has_key('title'):$page.title $else:My Wiki $:page
/templates/index.html
$def with (pages)Webpy Wiki
Pages:
$for page in pages:- $page.url
/templates/edit.html
$def with (page, form)Edit $form.d.title
Delete page?
/model.py
import webdb = web.database(dbn='mysql', db='wiki', user='justin')def get_pages():return db.select('pages', order='id DESC')def get_page_by_url(url):try:return db.select('pages', where='url=$url', vars=locals())[0]except IndexError:return Nonedef get_page_by_id(id):try:return db.select('pages', where='id=$id', vars=locals())[0]except IndexError:return Nonedef new_page(url, title, text):db.insert('pages', url=url, title=title, content=text)def del_page(id):db.delete('pages', where="id=$id", vars=locals())def update_page(id, url, title, text):db.update('pages', where="id=$id", vars=locals(),url=url, title=title, content=text)
[Python]Basic wiki in 0.3
[Python]Basic Blog in 0.3
Python
python
美国民主基本文献USIA: Basic Readings in U.S. Democracy
BASIC语言
[Python]python随笔
[Python]Python笔记-
[Python]python编程 FAQ
MATLAB与Visual Basic
Visual Basic的基本知识
Cardiac Basic Physiology
python 数列
[Python]C#程序员初学Python
[Python]Python连接MySQL (例子)
[Python]python for ARM/LINUX
[Python]MySQLdb for Python使用指南
[Python]用Python操作Mysql
Home - SpringSide Wiki - Confluence
WubiGuide - Ubuntu Wiki
ARMv7 - GCC Wiki
关与Wiki
*维客(wiki)不完全手册
WiKi程序大全