Python快速建站系列-Part.Two-结构化和布局
|版权声明:本文为博主原创文章,未经博主允许不得转载。
首先明确我们要建一个什么样的站,作为教程(也算自己使用tornado的一个小总结),自然功能不能太多,但又满足一个普通网站需要的就行了。
目前想到的功能有:登录,注册,发表文章,删除文章,发表评论,个人主页,代码展示和个人计划管理。
数据库规范↓
#数据库规范
codedb:codes //本地代码文件
_id ID
title 标题
path 路径
codetype 语言
Ps: static\codes\*.txt
codedb:blogs
_id ID
author 作者
title 题目
content 内容
datetime 时间
codedb:users
_id ID
username 用户名
password 密码
nickname 昵称
roleid 权限声明
codedb:usercode
_id ID
title 标题
author 作者
codetype 语言
content 代码
main.py↓
import os.path
import pymongo
from tornado import httpserver,options,web,ioloop
from tornado.options import define,options
define('port',default=8000,help=None,type=int)
class Application(web.Application):
def __init__(self):
handlers = [(r'/',IndexHandler),
(r'/sign/(\w+)',SignHandler),
(r'/code/(\w+)',CodeHandler),
(r'/user/(\w+)',UserHandler),
(r'/blog/(\w+)',BlogHandler)]
settings = dict(template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
debug=True)
conn = pymongo.MongoClient('localhost',27017)
self.db = conn.codedb
web.Application.__init__(self,handlers,**settings)
options.parse_command_line()
http_server = httpserver.HTTPServer(Application())
http_server.listen(options.port)
ioloop.IOLoop.instance().start()
代码的理解参考Tornado文档翻译1.2.1部分
/ →主页 /sign →登录注册退出等操作 /code →代码部分 /user →用户登录以后的操作 /blog →与文章有关的操作
然后就可以在templates目录下创建相应的html文件
main.html
index.html
sign/
signup.html
signin.html
code/
codelist.html
codeview.html
codeadd.html
/user
usercen.html
userblog.html
userinfo.html
/blog
bloglist.html
blogview.html
main.html就是网站其它页面的父模块,里面主要是网页总体框架↓
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习小站|TSSS|CODE</title>
<link rel="stylesheet" href="{{ static_url("css/bootstrap.min.css") }}">
<link rel="stylesheet" href="{{ static_url("css/bootstrap-theme.css") }}">
<script type="text/javascript" src="{{ static_url("js/bootstrap.min.js") }}"></script>
<script type="text/javascript" src="{{ static_url("js/jquery-1.11.1.js") }}"></script>
<script type="text/javascript" src="{{ static_url("js/tinymce/tinymce.js") }}"></script>
<script>tinymce.init({ selector:'textarea' });</script>
<script type="text/javascript" src="{{ static_url(r"js/syntaxhighlighter/scripts/shCore.js") }}"></script>
<script type="text/javascript" src="{{ static_url(r"js/syntaxhighlighter/scripts/shBrushCpp.js") }}"></script>
<link type="text/css" rel="stylesheet" href="{{ static_url(r"js/syntaxhighlighter/styles/shCoreDefault.css") }}"/>
<script type="text/javascript">SyntaxHighlighter.all();</script>
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
学习小站 <small>Small Study Station</small>
</h1>
</div>
{% block content %}
{% end %}
</div>
</div>
</div>
<script type="text/javascript" src="{{ static_url("js/bootstrap.min.js") }}"></script>
<script type="text/javascript" src="{{ static_url("js/jquery-1.11.1.js") }}"></script>
</body>
3</html>
这样总体结构和网页的布局就大概像个样子了。
--Part.One--
Python快速建站系列-Part.Two-结构化和布局的更多相关文章
- Python快速建站系列-Part.One-组装开发环境
|版权声明:本文为博主原创文章,未经博主允许不得转载. 源代码都在github上:SmallStudyStation 现在是个demo,但回来会租个服务器,等功能完善了放到服务器上挂着,域名jusot ...
- Python快速建站系列-Part.Three-注册和登录
|版权声明:本文为博主原创文章,未经博主允许不得转载. 上一个Part已经给TSSS编好了一个简单的Web服务,网页的基础模版也写好了,那从这个Part开始就慢慢增加编写功能. 先写基础功能:注册和登 ...
- Python快速建站系列-Part.Six-文章内容浏览
|版权声明:本文为博主原创文章,未经博主允许不得转载. 其实到这里网站的基本功能已经完成一半了,第六节就完成文章内容的阅读功能. 完成blogview.html↓ {% extends "m ...
- Python快速建站系列-Part.Five.3-个人主页及资料页面
|版权声明:本文为博主原创文章,未经博主允许不得转载. 第五部分最后一节,完成个人主页里资料页面的个人资料的展示和修改功能,不过毕竟功能比较少,个人资料其实只有昵称一项,手动滑稽. 一如既往先写出来u ...
- Python快速建站系列-Part.Five.2-个人主页及文章列表
|版权声明:本文为博主原创文章,未经博主允许不得转载. 从usercen.html就可以发现我为个人主页设了三个分开的小版面:写文章.个人文章目录.个人资料 所以按顺序Part.Five的第二部分就完 ...
- Python快速建站系列-Part.Five.1-个人主页及发表文章
|版权声明:本文为博主原创文章,未经博主允许不得转载. 现在的TSSS已经有了注册和登录的功能,首页的内容也填充好了,那这一节就完成用户个人主页的内容和发表文章功能的实现. 先完成用户个人主页的use ...
- Python快速建站系列-Part.Four-首页内容填充
|版权声明:本文为博主原创文章,未经博主允许不得转载. Part.Three中实现了注册和登录的功能,那这一节完成主页内容的填充,并且主页中要实现简单的可以查找代码的功能. 而且有于公共代码部分存储在 ...
- PHPCMS快速建站系列之搜索功能
默认模板的搜索功能代码 <div class="bd"> <form action="{APP_PATH}index.php" method= ...
- PHPCMS快速建站系列之自定义分页函数
内容分页的实现方法:{pc:content action="lists" catid="$catid" order="id DESC" nu ...
随机推荐
- Selenium_用selenium webdriver实现selenium RC中的类似的方法
最近想总结一下学习selenium webdriver的情况,于是就想用selenium webdriver里面的方法来实现selenium RC中操作的一些方法.目前封装了一个ActionDrive ...
- “Invalid maximum heap size” when running Maven
运行mvn package,报错: Invalid maximum heap size: -Xmx512m. Error: Could not create the Java Virtual Mach ...
- 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)
当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...
- Web前端代码页面布局总结
一. html (1)编码:所有编码均采用xhtml,标签必须闭合,属性值用双引号包括,编码统一为utf-8. (2)语义化:语义化html,正确使用标签. (3)文件命名:命名以中文命名,依实际模 ...
- android之消息机制(二)
消息通道:Looper 首先编写main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk ...
- 将CachedRowSet中的数据转储到对象中
虽然还有很多bug,但凑合能用,就是将CachedRowSet中的数据转换成对象或List.省去了繁琐难看的一系列get/set方法. 先说调用: 注: cachedRowSet是查询的结果集 Stu ...
- BizTalk动手实验(八)消息路由
1 课程简介 通过本课程熟悉BizTalk消息由的机制 2 准备工作 1. 熟悉XML.XML Schema.XSLT等相关XML开发技术 2. 新建BizTalk空项目 3 演示 3.1 动态消息路 ...
- “迷宫”sprint——6.8
会议时间:2015.6.8 ,12:30——13:00 会议内容:开始第二阶段冲刺,分配任务. 我的任务:完成安卓环境搭建.
- SQL AND & OR 运算符
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤. AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 如果第一个条件和第二个条件都成立,则 ...
- Nginx 反向代理学习(一)
反向代理apache等http资源 ## Basic reverse proxy server ## upstream apachephp{ server 127.0.0.1:8560; #php5. ...