紧接上一文
修改后代码:
bookModel.py
__author__ = 'watsy' import pickle # #objectModel # class cwBook(list): def __init__(self, name, author, chapters = []): list.__init__([]) self.name = name self.author = author self.extend(chapters) def save(self, path=''): def writeContent(name,chapter): # print name # print chapter return "%s,%s" % (name, ','.join(chapter)) try: file_path = "%sbook_%s.txt" % (path, self.name) with open(file_path, 'w') as fn: fn.write(writeContent(self.name, self)) except IOError as err: print ("cwBook [io error] : %s" % (err)) # #read from files to objects # def readObjectsAndSerialize(file_list, serialize_file): booksDict = {} for bookfile in file_list: #read text file try: with open(bookfile) as bf: datas = bf.readline().strip().split(',') # print datas book = cwBook(datas.pop(0), datas.pop(0), datas) booksDict[book.name] = book except IndexError as err: print ("readObjectsAndSerialize[file err] error : %s" % (err)) pass except IOError as err: print ("readObjectsAndSerialize[read file] error : %s" % (err)) #serialize data if len(booksDict) != 0: try: with open(serialize_file, 'wb') as wdf: pickle.dump(booksDict, wdf) except IOError as err: print ("readObjectsAndSerialize[serialize] error : %s" % (err)) return booksDict # #read from serialize files # def loadObjectsFromSerialize(serialize_file): booksDict = {} try: with open(serialize_file, 'rb') as sff: booksDict = pickle.load(sff) except IOError as err: print ("loadObjectsFromSerialize error : %s", err) return booksDict # if __name__ == '__main__': # print readObjectsAndSerialize(['../../../data/book1.txt', '../../../data/book2.txt'], '../../../data/datas.txt')
__author__ = 'watsy' from string import Template def fun_response(resp = 'text/html'): # return ('Content-Type: %s\r\n\r\n\r\n\r\n' % (resp)) return "Content-Type: text/html\n\n" def fun_html(): return "<html>" def fun_closehtml(): return "</html>" def fun_title(html_title, code='utf-8'): try: with open('../templete/title.html') as titlefn: title_string = titlefn.read() tem = Template(title_string) return tem.substitute(title=html_title,charset=code) except IOError as err: print ("fun_title error %s " % (err)) #<form> def fun_form(url='',method='post'): return "<form action='%s' method='%s'>" % (url, method) #</form> def fun_closeform(): return "</form>" #<input type='radio'> def fun_radio_button(name, value): return "<input type='radio' name='%s' value='%s'> %s <br>" % (name, value, value) #<input type='text'> def fun_text(name, value=''): return "<input type='text' name='%s' value='%s'>" % (name, value) #<input type='submit'> def fun_submit(name='submit', value='submit'): return "<input type='submit' name=%s value=%s>" % (name, value) def fun_ul_items(name,item_list): return_string = "<b>%s</b><ul>" % (name) for item in item_list: return_string = "%s<li>%s</li>" % (return_string, item) return_string = "%s</ul>" % (return_string) return return_string def fun_label(value, name='label'): return "<label name='%s'>%s</label>" % (name, value) #<img> def fun_img(img_src, width = 200, height = 200): return "<img href='%s' width='%s' height='%s'>" % (img_src, width, height) #<a> def fun_aLink(url, value): return "<a href='%s'>%s</a>" % (url,value) #<p> def fun_para(para_string): return "<p>%s</p>" % para_string #<h2> def fun_header(head_string, level=2): return "<h%s>%s</h%s>" % (level,head_string,level) def fun_hr(): return "<hr>" def fun_br(): return "<br>" if __name__ == '__main__': print fun_title('hello world') print fun_para('p tag') print fun_img('http://213.cn/jpg')
#!/usr/bin/env python # -*- coding: UTF-8 –*- # 上面这2句很重要 # 缺少第一句,无法执行脚本 # 缺少第二句,无法显示中文 __author__ = 'watsy' from include.bookModel import cwBook, readObjectsAndSerialize from include.htmlTemplate import * import glob import cgi #获取from form_fields = cgi.FieldStorage() #添加一本书 def addbook(form): bookname = form.getvalue('booktitle') bookcontent = form.getvalue('bookchapter') if bookname and bookcontent: #这里要做内容过滤 book = cwBook(bookname,'',bookcontent.strip().split(",")) book.save('../data/') #加载内容 def loadModels(): #load books data_files = glob.glob('../data/book*.txt') # print data_files # print data_files return readObjectsAndSerialize(data_files, '../data/datas.txt') #显示书籍列表 表单 def showBooListForm(books): print fun_form('book.py') for book in booksDict.keys(): print fun_radio_button('book',book) print fun_br() print fun_submit('look','查看') print fun_closeform() #显示增加书籍 表单 def showAddBookForm(): print fun_form('','post') print fun_para('新增一本书') print fun_label('书名') print fun_text('booktitle') print fun_br() print fun_br() print fun_label('内容') print fun_text('bookchapter') print fun_br() print fun_br() print fun_submit('addbook','新增') print fun_closeform() #html页面 def htmlcontent(books): print fun_response() print fun_html() print fun_title('index') print fun_header('这里显示是watsy本人的藏书') print fun_hr() # form showBooListForm(books) print fun_hr() #add form showAddBookForm() print fun_hr() print fun_closehtml() #如果是本地提交添加书籍 if form_fields.getvalue('addbook'): addbook(form_fields) #加载数据 booksDict = loadModels() #输出完整页面 htmlcontent(booksDict)
#!/usr/bin/env python __author__ = 'watsy' import cgi from include.bookModel import cwBook, loadObjectsFromSerialize from include.htmlTemplate import * #get objects booksDict = loadObjectsFromSerialize('../data/datas.txt') #get form form_fields = cgi.FieldStorage() #print html content print fun_response() print fun_html() print fun_title(form_fields.getvalue('book')) print fun_aLink('index.py', 'indexPage') book = booksDict[form_fields.getvalue('book')] print fun_ul_items(form_fields.getvalue('book'), book) print fun_closehtml()