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

news/2024/5/9 3:59:08/文章来源:https://blog.csdn.net/littlethunder/article/details/25560463

        先上个效果图:


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



之前尝试过一些开源的富文本编辑器widgEditor和百度的ueditor,总感觉太大众化,既然域名是hacker,那就用hack一些的方式,直接用裸的<textarea>然后用markdown格式就最棒了嘛,发表后的样子:



完美支持markdown,而且我测试过的所有markdown编辑器比如retext、dillinger.io、atom、stackedit等都不支持<pre>中的“<”和“>”,所以在这些编辑器中#include<stdio.h>是打印不出来的,我用python-markdown2转码就没有这个问题,注意在#前要用“\”转义,否则认为markdown语法中的主标题,字体会变大的哈。发表文章的前端主要代码如下:

{%block content%}
<form action='/post' method='post' class='well'><div class='form-group'><label class='sr-only'>标题</label><input type='text' name='title' class='form-control' placeholder='请输入标题'/></div><div class='form-group'><label class='sr-only'>正文</label><textarea rows='20' type='text' name='blog' class='form-control' placeholder='请输入文章正文'></textarea></div><button type='submit' class='btn btn-warning'>发送</button>
</form>
{%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%}
<div>
<p class='text-success h2'>{{blog[1]}}的专栏</p>
<br/>
<p class='text-danger h3'>{{blog[2]}}</p>
<p class='text-muted h6'>{{blog[4]}}</p>
<br/>
{%raw blog[3]%}
</div><div>
<ul>{%for i in comments%}<li><a href='/user/{{i[2]}}' class='text-success h4'>{{i[2]}}</a>: <label class='text-warning h4'>{{i[3]}}</label>  <label class='text-muted h6'>{{i[4]}}</label></li>{%end%}
</ul>
</div><div><form action='/comment' method='post' class='form-inline'><div class='form-group'><label class='sr-only'>评论</label><input type='text' name='comment' class='form-control' placeholder='请输入评论'></input></div><button type='submit' class='btn btn-default'>评论</button></form>
</div>
{%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]=='/':breakblogid=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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_865772.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从“奥运门票网站800万访问量”想到的成本、质量、进度、风险等关系

看到这个新闻后颇有一番滋味&#xff0c;更体验到我一直关注的软件性能着实无处不在&#xff0c;这个案例也确实值得我们好好反思一下。 不知道网友们有没有报名参加国际日语考试的——这个网站每年05年前都有人不能报名&#xff0c;因为报名人数太多&#xff0c;所以报名当日大…

电信网通证实台湾地震影响内地访问国际网站(12月27日)

电信网通证实台湾地震影响内地访问国际网站 http://www.sina.com.cn 2006年12月27日 09:39 东方网 中国国际海底光缆网络 中美六家运营商正在共同建设连接中国和美国的兆兆级海底光缆系统——跨太平洋直达光缆系统 东方网讯 12月27日消息&#xff0c;从今日凌晨起&#xff0c…

郑昀邀请网站开发工程师架构师加盟Web3.0新锐网站[工作地点-北京财智国际大厦]

公司新年新气象&#xff0c;刚刚换到了一个大办公室&#xff0c;也离中关村更近了。随着公司规模的扩大&#xff0c;开始了新一轮的招兵买马&#xff0c;哈哈。请各位帮忙看看有没有合适的人选推荐&#xff0c;不胜感谢&#xff01; 招聘:研发部 招聘岗位1&#xff1a;PHP网站架…

网站PR值

刚看这个东西&#xff0c;还以为是rp啦&#xff0c;结果发现写反了。查了一下资料&#xff0c;转贴如下。 PR是英文Pagerank 的缩写形式&#xff0c;Pagerank取自Google的创始人LarryPage&#xff0c;它是Google排名运算法则&#xff08;排名公式&#xff09;的一部分&#xf…

使用C#实现网站用户登录

我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用C#来模拟一个用户的登录拉&#xff1f;要实现用户的登录&#xff0c;那么首先就必须要了解一般网站中是怎么判断用户是否登录的。 HTTP协议是一个无连接的协议&#xff0c;也就…

使用C#登录带验证码的网站

我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现&#xff0c;很多人问到对于使用了验证码的网站该怎么办&#xff0c;这里我就讲讲验证码的原理和对应的登录方法。 验证码的由来 几年前&#xff0c;大部分网站、论坛之类的是没有验证码的&#xff0c;因为对于一…

高性能网站性能优化

从LiveJournal后台发展看大规模网站性能优化方法 于敦德 2006-3-16 一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目&#xff0c;几个人出于爱好做了这样一个应用&#xff0c;以实现以下功能&#xff1a; 博客&#xff0c;论坛 社会性网络&#xff0c;找到朋友 聚合…

php搭建网站

一.需要一台没有安装过lamp环境的cenos7 二. yum install -y wget && wget -O install.sh https://notdocker.xp.cn/install.sh && sh install.sh 下载phpstudy 三. 浏览器输入这里的公网地址&#xff0c;载入界面后输入初始账户和用户名 四. 软件商店下载m…

实际采用 FleaPHP 的网站

下面都是采用 FleaPHP 框架开发的网站列表&#xff0c;如果发现无效连接请在留言。 如果你有采用 FleaPHP 开发的网站&#xff0c;并且愿意公开网址&#xff0c;可以发邮件到 dualface (at) gmail.com 需要提供的信息包括网站名称和连接地址&#xff0c;以及简单的介绍文字。 云…

LAMP网站架构搭建案例—论坛搭建

LAMP即LinuxApacheMysqlphp的简写。下面以论坛搭建为例来说明LAMP架构。 准备 创建论坛站点 mkdir -p /var/www/westos.com/bbs/html vim /etc/httpd/conf.d/bbs.conf1. 安装数据库 yum install mariadb mariadb.server -y systemctl start mariadb###安全初始化数据库 mysq…

vs2005 发布网站,只生成一个dll

2008年02月09日 星期六 18:10 1.允许更新此预编辑站点 选中这一项后&#xff0c;编译出来的包括aspx文件和dll&#xff0c;与2003下一样。 不选中这一项&#xff0c;编译出来的aspx中没有界面信息&#xff0c;只有一句静态文本&#xff0c;就是不允许发布后修改页面 为了不让订…

seo优化:把百度放进数据库

seo优化:把百度放进数据库 有时候我想&#xff0c;能把百度的数据放进数据库&#xff0c;用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步&#xff0c;利用Google Search API 把Google的搜索结果放进数据库是很容易办到得…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂&#xff1a;一边搜索&#xff0c;一边看PageRank 下载地址&#xff1a;多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用&#xff0c;回复和我讨论了我的结论。有赞成的&#xff0c;有反对的&#xff0c;有鼓励的…

路由器架设虚拟服务器让外网访问到本地网站

摘自百度&#xff1a;http://jingyan.baidu.com/article/6f2f55a18e7998b5b93e6c8b.html 此文目的演示如何通过路由器设置&#xff0c;让外网可以访问到内网中的某一台电脑&#xff0c;也可以是电脑上架设的本地网站。 此方法只适合同网访问&#xff0c;如网通设置后&#xff…

真实版的“私人订制”网站服务,冯小刚葛同学,你们怎样看??

“私人定制”贺岁喜剧片马上就要上映开播了&#xff0c;我知道大家都想一睹为快。就不说太多了&#xff0c;只是最近发现一家网站&#xff0c;叫“歇会儿网”&#xff0c;百度排名第一&#xff0c;居然也再提供“私人定制”服务&#xff0c;那我就不淡定了啊&#xff0c;不淡定…

ASP.NET 2.0网站专案同时使C#与VB.NET之技巧(新书连载)

ASP.NET 2.0网站专案同时使C#与VB.NET之技巧&#xff08;新书连载&#xff09; 你知道专案ASP.NET 2.0网站要如何同时使用C#与VB.NET两种语言及多组件的技巧吗&#xff1f; 节录自【圣殿祭司的ASP.NET 2.0专家技术手册】新书 在以往VS.NET 2002及VS.NET 2003的Visual Studio工具…

私人订制,现实版的“圆梦网站”

再过一天&#xff0c;大家关注的年度贺岁喜剧片《私人定制》就要上映了&#xff0c;电影未出&#xff0c;其中的台词就开始流行开来。“成全别人&#xff0c;恶心自己”&#xff0c;专门为不同客户量身定制“圆梦方案”&#xff0c;无论客户的白日梦多奇葩、要求多严格&#xf…

网站计数器

网站计数器 View Code using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControl…

基于H.ui.Admin UI模板的网站管理后台

基于H.ui.Admin UI模板的网站管理后台 最近接手一个跨境电商平台开发&#xff0c;客户侧重电商网站UI设计&#xff0c;对管理后台要求不高&#xff0c;由我们决定选哪一款后台模板。找来找去&#xff0c;感觉还是H.ui靠谱一些&#xff0c;主要是这个模板清爽&#xff0c;不需要…

基于H.ui.Admin UI模板的网站管理后台

最近接手一个跨境电商平台开发&#xff0c;客户侧重电商网站UI设计&#xff0c;对管理后台要求不高&#xff0c;由我们决定选哪一款后台模板。找来找去&#xff0c;感觉还是H.ui靠谱一些&#xff0c;主要是这个模板清爽&#xff0c;不需要过多选择。其他的流行后台模板也看了&a…