【从0开始Tornado建站】发表文章和评论

        先上个效果图:

【从0开始Tornado建站】发表文章和评论_第1张图片

这是每个用户的主页,因为是基本功能,所以用户头像,爱好等信息都还没有,在下一阶段加上。右侧“发表新文章”按钮点击后进入发表文章的页面:

【从0开始Tornado建站】发表文章和评论_第2张图片


之前尝试过一些开源的富文本编辑器widgEditor和百度的ueditor,总感觉太大众化,既然域名是hacker,那就用hack一些的方式,直接用裸的

{%end%}
发表文章的后端代码如下:

class postHandler(tornado.web.RequestHandler):
	def get(self):
		name=self.get_cookie('hackerName')
		self.render('post.html',cookieName=name)
	def post(self):
		title=self.get_argument('title')
		blog_md=self.get_argument('blog')
		blog=translate(blog_md)
		name=self.get_cookie('hackerName')
		idvalue=insertBlog(name,title,blog)
		self.redirect('/blog/'+str(idvalue))

insertBlog函数定义如下:

def insertBlog(name,title,blog):
	now=time.ctime()
	c.execute('insert into blog(name,title,blog,time) values("'+name+'","'+title+'","'+blog+'","'+now+'")')
	db.commit()
	c.execute('select max(id) from blog')
	return c.fetchone()[0]  #新插入数据的id

translate函数定义如下:

def translate(md):
	for i in whiteList:
		if i[0] in md:
			md=md.replace(i[0],i[1])
	md2=html.escape(md)
	data=markdown2.markdown(md2)
	for i in whiteList:
		if i[1] in data:
			data=data.replace(i[1],i[0])
	return data

显示文章的前段主要代码如下:

{%block content%}

{{blog[1]}}的专栏


{{blog[2]}}

{{blog[4]}}


{%raw blog[3]%}
    {%for i in comments%}
  • {{i[2]}}:   
  • {%end%}
{%end%}

显示文章和评论的后端代码如下:

class blogHandler(tornado.web.RequestHandler):
	def get(self,idvalue):
		selfname=self.get_cookie('hackerName')
		blog=showOneBlog(idvalue)
		comments=showComment(idvalue)
		self.render('blog.html',cookieName=selfname,blog=blog,comments=comments)

class commentHandler(tornado.web.RequestHandler):
	def post(self):
		selfname=self.get_cookie('hackerName')
		comment=self.get_argument('comment')
		refer=self.request.headers.get('referer')
		for i in range(len(refer)-1,0,-1):
			if refer[i]=='/':
				break
		blogid=refer[i+1:]
		print(blogid)
		addComment(blogid,selfname,comment)
		self.redirect('/blog/'+blogid)

文章和评论的表格定义如下:

CREATE TABLE blog(id integer primary key,name text,title text,blog text,time text);
CREATE TABLE comment(id integer primary key,blogid integer,name text,comment text,time text);

我想在接下来升级中加上评论的@功能,还有评论提示功能。

转载请注明:转自http://blog.csdn.net/littlethunder/article/details/25560463

你可能感兴趣的:(Tornado,【从0开始Tornado建站】)