一、概述

forum是一个简单的web.py论坛,后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS。

该论坛的主要功能包括:

  • 注册、登录、密码找回
  • 头像/签名/邮箱/密码修改
  • 游客自由看贴、文章列表分页显示
  • 登录后发帖、作者才能删贴(所有对该贴的评论也会被删除)
  • 登录后无刷新回帖(包括引用回帖,即对回复的回复)

forum代码的GitHub主页:https://github.com/RussellLuo/forum

二、代码结构

forum是一个典型的Web应用,代码结构总体分为后端(back-end,简写为be)和前端(front-end,简写为fe)两部分。

后端部分又可以分为URL路由处理(简写为url,这部分代码与web.py框架强相关)、数据库读写(简写为db,即与MySQL的交互)和HTML模板(简写为html),而前端部分则主要分为JavaScript(简写为js)和CSS。其实这种划分也不是十分严格的,例如用于生成动态页面的HTML模板,就夹杂了后端的web.py模板技术和前端的HTML语法。

以下为forum程序的目录结构,注释的抬头表明了该文件的所属分类:

forum/
forum.py                             (be_url: 后台主程序,URL路由入口)
model.py                             (be_db: 访问users、posts、comments表)
README.md
schema.sql                            (be_db: 用于创建MySQL数据库和表的SQL语句)
settings.py                           (be_url: 一些网站级别的全局配置)
static/
css/
style.css                     (fe_css: 定义了页面元素的样式)
img/
user_normal.jpg
boy.gif
girl.gif
js/
app/                          (fe_js: 自主开发代码)
comment.js                (fe_js: 专用模块,用于动态处理view.html中的回帖操作)
common.js                 (fe_js: 通用模块,定义了一些公用的变量或函数)
login.js                  (fe_js: 专用模块,用于动态处理login.html页面)
new_post.js               (fe_js: 专用模块,用于动态处理add.html页面)
password.js               (fe_js: 专用模块,用于动态处理password.html页面)
profile.js                (fe_js: 专用模块,用于动态处理master_profile.html页面)
register.js               (fe_js: 专用模块,用于动态处理register.html页面)
setting.js                (fe_js: 专用模块,用于动态处理account_settings.html页面)
validator.js              (fe_js: 通用模块,用于表单输入的合法性验证)
lib/ (fe_js: 第三方库)
jquery-1.10.1.min.js      (fe_js: jQuery库)
require.min.js            (fe_js: RequireJS库,用于JavaScript/jQuery代码的模块化)
main.js                       (fe_js: JavaScript代码入口,主模块)
templates/
about.html                        (be_html: “关于”页面)
account_settings.html             (be_html: “设置”页面)
failed.html                       (be_html: 操作失败时的页面)
list.html                         (be_html: 所有帖子的列表,也是论坛主页)
master_profile.html               (be_html: 用户登录后的个人信息页面)
register.html                     (be_html: “注册”页面)
view.html                         (be_html: 看贴/回帖的页面)
account_posts.html                (be_html: “文章”页面)
add.html                          (be_html: “发帖”页面)
layout.html                       (be_html: 网站页面布局)
login.html                        (be_html: “登录”页面)
password.html                     (be_html: “找回密码”页面)
user_profile.html                 (be_html: 用户未登录时的个人信息页面,或者其他用户的信息页面)
util.py                               (be_url: 定义了一些辅助函数)

三、运行

1、相关依赖

  • Python(建议2.6以上,更低版本没有试过)
  • web.py(0.37版本)
  • MySQLdb
  • markdown

2、获取代码

$ git clone https://github.com/RussellLuo/forum.git
$ cd forum

3、初始配置

a)MySQL账户配置

修改settings.py中的“MySQL配置”:

# 本地环境下的MySQL配置
MYSQL_USERNAME = 'your_mysql_username' # 修改为你本地的MySQL用户名
MYSQL_PASSWORD = 'your_mysql_password' # 修改为你本地的MySQL密码

b)创建数据库

$ mysql -u[mysql_username] -p
Enter Password: [mysql_password]
...
mysql> source schema.sql;

c)邮件服务器配置

登录页面中的“找回密码”功能是指:发送包含临时密码的邮件给用户,因此需要用到邮件服务器。

修改settings.py中的“email服务器配置”:

##### email服务器配置 #####
import web
web.config.smtp_server = 'smtp.gmail.com'
web.config.smtp_port = 587
web.config.smtp_username = 'your_gmail_address' # 修改为你的gmail邮箱地址
web.config.smtp_password = 'your_gmail_password' # 修改为你的gmail邮箱密码
web.config.smtp_starttls = True

如果要使用gmail之外的其他邮件服务器,那上面列出的所有配置都要改,具体数据视情况而定。

4、开始体验

$ python forum.py

在浏览器中访问 http://0.0.0.0:8080/ 即可。

最后,要特别感谢frankfu,他基于web.py的论坛源码给了我很大的启发,forum还借鉴了其中的代码结构和分页显示功能。

一个简单的web.py论坛的更多相关文章

  1. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  2. django创建一个简单的web站点

    一.新建project 使用Pycharm,File->New Project…,选择Django,给project命名 (project不能用test命名)   新建的project目录如下: ...

  3. Docker容器技术-创建一个简单的Web应用

    一.创建一个简单的Web应用 1.identicon 基于某个值而自动产生的图像,这个值是IP地址或用户名的散列值. 用途: 通过计算用户名或IP地址的散列值,在网站上提供用于识别用户的图像,以及自动 ...

  4. 使用Servlet和JSP实现一个简单的Web聊天室系统

    1 问题描述                                                利用Java EE相关技术实现一个简单的Web聊天室系统,具体要求如下. (1)编写一个登录 ...

  5. 自己动手模拟开发一个简单的Web服务器

    开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...

  6. 一个简单的web服务器

    写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...

  7. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  8. Node.js简单介绍并实现一个简单的Web MVC框架

    编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...

  9. IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

    一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...

随机推荐

  1. 强化学习8-时序差分控制离线算法Q-Learning

    Q-Learning和Sarsa一样是基于时序差分的控制算法,那两者有什么区别呢? 这里已经必须引入新的概念 时序差分控制算法的分类:在线和离线 在线控制算法:一直使用一个策略选择动作和更新价值函数, ...

  2. python3自学第二天,模块,三元运算

    1.模块的认识. sys模块,os模块等 如何引入模块 import os cmd_res1=os.system("dir") # 执行命令dir,不保存结果 print(cmd_ ...

  3. C# 创建 写入 读取 excel

    public static void CreateExcelFile(string FileName, List<UUser> luu) { ] == "xlsx")/ ...

  4. python上传图片并识别图片

    from json_response import JsonResponse from aip import AipOcr import os import time BASE_DIR = os.pa ...

  5. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  6. STP实验(指定特定交换机为根桥)

    实验要求:将三层交换机设置为根桥交换机,并查看 拓扑如下: 涉及内容有: 1.根桥交换机的选举方式 2.生成树修改优先级成为根桥交换机 3.生成树直接指定根桥交换机 根桥交换机是根据优先级和MAC地址 ...

  7. mysql创建表单脚本

    如图所示,T_SENSOR_QC_CONFIG_GLOBAL_ITEM表通过外键CATEGORY_ID连接T_SENSOR_QC_CONFIG_CAT表.COMMENT为字段或表单添加注释.

  8. Python学习笔记第三周

    目录 一.基础概念 1.集合 集合方法 a.设置集合 b.取交集 c.取并集 d.取差集 e.判断子集 f.判断父集 g.对称差集 基本操作: a.添加 b.删除 c.discard删除 d.长度 e ...

  9. JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;

    JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...

  10. phpstorm使用zen coding 快速编辑补全html/css代码

    百科定义: 使用仿CSS选择器的语法来快速开发HTML和CSS ——由Sergey Chikuyonok开发. Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为像CSS一样的选择器)和上 ...