1、概述css
forum是一个简单的web.py论坛,后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS。html
该论坛的主要功能包括:前端
forum代码的GitHub主页:https://github.com/RussellLuo/forum。python
2、代码结构mysql
forum是一个典型的Web应用,代码结构整体分为后端(back-end,简写为be)和前端(front-end,简写为fe)两部分。jquery
后端部分又能够分为URL路由处理(简写为url,这部分代码与web.py框架强相关)、数据库读写(简写为db,即与MySQL的交互)和HTML模板(简写为html),而前端部分则主要分为JavaScript(简写为js)和CSS。其实这种划分也不是十分严格的,例如用于生成动态页面的HTML模板,就夹杂了后端的web.py模板技术和前端的HTML语法。git
如下为forum程序的目录结构,注释的抬头代表了该文件的所属分类:github
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: 定义了一些辅助函数)
3、运行web
一、相关依赖sql
二、获取代码
$ git clone https://github.com/RussellLuo/forum.git $ cd forum
三、初始配置
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以外的其余邮件服务器,那上面列出的全部配置都要改,具体数据视状况而定。
四、开始体验
$ python forum.py
在浏览器中访问 http://0.0.0.0:8080/ 便可。
最后,要特别感谢frankfu,他基于web.py的论坛源码给了我很大的启发,forum还借鉴了其中的代码结构和分页显示功能。